IB order processing/routing latency

Yes I did, it was a buy limit that was about 5c from NBBO. Got filled then the price tanked on no news. Fewer surprises with no dark pools.
 
Fewer surprises with no dark pools.
You may be right about that, but I am not sure your example is a good one. Stock moving 5c below best bid is not exactly a flash crash.
I think if you want to get filled at a certain price, dark pools should be ok. If you want to play speed games, IB is not where you trade.
 
I checked a few out of curiosity ... good info to have in any case. My ping is 15-20ms.

As printed in TWS Api logs EST time on Windows:

11:15:06:227 <- placeOrder()
>>> 230ms
11:15:06:457 -> "Submitted"

11:15:06:662 <- cancelOrder()
>>> 37ms
11:15:06:699 -> "Cancelled"

I'm not proficient with IB logs yet. They send multiple callbacks with seemingly the same information. For example, the first "Submitted" message seem to come from TWS itself and there is another one which comes from the server, which I assume means the server actually submitted the order to the exchange (vs TWS submitted to the server). There is no info on which exchange the order was submitted to, as far as I can tell.
Update us please if you find anything useful.
 
Checked a few more ... the 230ms seems to be an outlier, 40-100ms seems to be the norm, but I'm running lots of GUI on the Windows box with multiple monitors so maybe due to my machine performance.
 
I'm not proficient with IB logs yet. They send multiple callbacks with seemingly the same information. For example, the first "Submitted" message seem to come from TWS itself and there is another one which comes from the server, which I assume means the server actually submitted the order to the exchange (vs TWS submitted to the server). There is no info on which exchange the order was submitted to, as far as I can tell.
Update us please if you find anything useful.
IB's API documentation does mention that you'll most likely receive duplicate order status callbacks: https://interactivebrokers.github.io/tws-api/order_submission.html (see section at bottom of page)
 
I checked a few out of curiosity ... good info to have in any case. My ping is 15-20ms.

As printed in TWS Api logs EST time on Windows:

11:15:06:227 <- placeOrder()
>>> 230ms
11:15:06:457 -> "Submitted"

11:15:06:662 <- cancelOrder()
>>> 37ms
11:15:06:699 -> "Cancelled"

I'm not proficient with IB logs yet. They send multiple callbacks with seemingly the same information. For example, the first "Submitted" message seem to come from TWS itself and there is another one which comes from the server, which I assume means the server actually submitted the order to the exchange (vs TWS submitted to the server). There is no info on which exchange the order was submitted to, as far as I can tell.
Update us please if you find anything useful.

instead of looking at the time between placeOrder and Submitted, what's more interesting is (exchangeTime - placeOrder) . exchangeTime can be found by looking for your quote on the tape. (Your numbers can bound that quantity above, but not below.)

I'm going to do this experiment myself at some point, will post back here when I do.
 
I don't have logs in front of me, but I'm getting about 30ms to cancel an order.
Out of curiosity, have you thought of using one of the discount DMA-ish brokerages like Lime?

PS. TBH, if latency matters at all, these days you can find a shared colocated server for a few hundred a month per exchange
 
Back
Top