8

A few weeks ago I started to trade American stocks. I have an IB account. Yesterday, I encountered a strange situation. I'm using the IB API.

  • 9:30:56 I sent a limit buy order to IB (Buy MSI at 54.06).
  • 9:31:18 I saw that MSI was trading below this level (using IQFeed to watch prices).
  • 9:33:15 My order was executed, but at 53.67.

Why is this?

John Bensin
  • 15,048
  • 3
  • 72
  • 112
Ilya Vishnyakov
  • 81
  • 1
  • 1
  • 2

4 Answers4

10

If you placed a market buy order, the order is filled at the current lowest ask price. Even if you entered the order when the ask price was $54.06, it's very possible that some event caused the price to drop to $53.67 between when you submitted the order and when it was filled/executed.

If you placed a limit buy order, you've specified not to buy the security at any more than the given price ($54.06). Once again, an event could have pushed the price down after you submitted the order, and because the limit order states to buy the shares at the given price or less, your order would be filled/executed immediately at that price.

John Bensin
  • 15,048
  • 3
  • 72
  • 112
4

IB specific information: Orders routed through SMART can be crossed internally, i.e. all IB customers and the IB error account take precedence over the NBBO.

Other than that the effects described by others (slippage) or a slow feed at IQ's may also be possible.

It's just hard to say in hindsight.

hroptatyr
  • 1,762
  • 11
  • 15
3

I believe the most likely explanation is that your order was routed to NYSE to participate in the opening auction. The NYSE open price on April 24 (the day you sent the order) was 53.67, and the time of your order was very close to 9:30. NYSE is not fully automated; their opening auctions do not happen precisely at 9:30:00. The time that the NYSE open printed to the tape is within about 10 seconds of your execution time.

Once IB had routed your order as a limit-on-open, they couldn't cancel that and reroute you, even when the offer on a different venue dropped below your bid price.

user2825
  • 31
  • 1
2

You have put your limit buy order at $54.06, and whilst your order was going through the price has dropped below your bid price, so you have been filled at the lowest ask prices below your order price.

The other possibility is if prices suddenly gapped down below your bid price, so you have been filled at the lowest ask price.

This is because your limit buy price is the maximum price you will buy the stock for but you can get executed at a lower price if it becomes available.

John Bensin
  • 15,048
  • 3
  • 72
  • 112
Victor
  • 20,987
  • 6
  • 48
  • 85