Los Angeles, CA
Posts: 2 since Feb 2015
Thanks Given: 0
Thanks Received: 5
|
Know that the Strategy Analyzer (when backtesting/ optimizing) produces fills that are one tick better than the limit order price. This is not consistent with the real world trading, which fills the limit orders (pretty much always) at their limit order price. As such, any optimization you do is pointless.
I'm guessing they did this in attempt at being conservative, but didn't quite get it right. Yes, you can select "Fill limit orders on touch", but that's not how the exchange fills them. The better way to simulate the filling of limit orders is to require the market price to go to the next price past the limit order price ("tick-through"), then fill at that limit order price. No, this isn't how the real world works, but it's closer to the actual market mechanics. (Indeed, I don't know of a better way to simulate the filling of limit orders, unless you have updates of the order book each time it changes, which is unlikely, and would consume a massive amount of memory, so isn't practical anyway.)
Where they got it wrong was filling the order at that next better price.
So, know that all of the limit orders methods are affected (EnterLongLimit, EnterLongStopLimit, etc). So, if you're wondering why your backtesting / optimization doesn't produce trades similar to what it does in real time, it's likely because of this.
I pointed this out to them over two months ago. At first they denied this problem existed. After proving it to them what was going on, they finally said to change this would be a "feature enhancement", so would require a vote from the users as to whether to fix it. Well, how is fixing a known coding defect a "feature enhancement" ? So, I then had to explain to them why they were wrong. (Looks like they got it right in NT 7.) They finally realized this really is a problem, and said they would fix it -- sometime.
I asked them about this again last week; I got a reply yesterday that this will be fixed in their next version. Of course, they don't make announcements as to when their next release might be, so it could be some weeks (months ?) before this gets fixed. In the meantime, I suggest that you do not use any of the limit order methods in your code.
In sum, I am encouraging (imploring ?) everyone to ask NT's Help Desk about this problem (action ticket NTEIGHT-13582, "historical limit order fills").
|