1. I submit an order to go long and my limit price = the current level's bid price which is 2370. My goal is to only get filled on the current level and not get a fill on the level below which will start at bid = 2369.75.
2. I observe a level change where the new bid price is 2369.75, so the level moved down.
3. I didn't get filled on the level that I wanted which was bid =2370 and now that we are on one level below (bid = 2369.75) if I get filled here, I will immediately be down 1 tick. So I submit a request to cancel my order.
4. The cancel is confirmed and I do not get filled at this new level.
End
So there are a couple of things that I observe in this series of events that I would characterize as wrong. If there is a level change down, then I would expect to have been filled on the original level prior to the level change. I would expect that because in order for the level to decrease from 2370 to 2369.75, every bid limit order resting would have to be filled and there would have to be 0 contracts at this level. Then and only then would the level drop. So If I had a resting order at the original level of 2370 it should get filled prior to the volume going to 0 and the next level coming into play.
I also seriously doubt that the mechanics of an exchange would allow for a change in the bid / ask price (AKA a level change) prior to filling every order at the prior level (for the side that would have had to clear 100% to create the level change in the first place).
So it seems that the assumption is, that a level change (lowering of the bid price or raising of the ask price) can occur prior to every order being filled at the previous level. And if one is quick enough they can submit a request to cancel their order prior to it getting filled.
I am not 100% sure about the exchange mechanics but I am 90% sure that this underlying assumption made by NinjaTrader in their Simulation engine is not the way the market will behave. I mean it would be great, if there is a lag (After a level change but prior to a fill occurring that I didn't want), but I don't thing there is one, and further I don't think there is any possibility of being fast enough to place a cancel order and have it go through prior to the level change.
I have some code I wrote that will capture these events and highlight the issue, and I will be glad to share if needed. But can someone from NT support confirm that they are aware of this behavior and speak to the questions that I have raised. I don't think the scenarios I have outlined are possible, but if they are, please explain what I am missing.
Thanks,
Ian
Comment