From a 90% to a 40% win rate: why NinjaTrader chart backtests mislead you
A while ago a client came to me — a genuinely nice guy, to be clear — with a strategy that, according to him, had a 90% win rate. He had checked it himself: he loaded the strategy on a NinjaTrader chart, the platform drew the historical trades on the candles, and almost all of them were winners. It looked unbeatable.
When I ran it through a proper tick-by-tick backtest, the real win rate was 40%. The client wasn't lying, and the platform isn't broken. He was simply measuring with a tool that doesn't measure what he thought it did.
What NinjaTrader actually does when you load a strategy on a chart
When you apply a strategy to a chart, NinjaTrader computes the historical trades using closed-bar data only: open, high, low and close. It doesn't know the order in which price moved inside each candle, because that information isn't in the candle — it's in the ticks.
That has very concrete consequences:
- Stops that never trigger. If a candle touches your stop but closes above it, the engine may count the trade as a winner: it evaluates the finished bar, not the path inside it. Live, that stop would have been hit and the trade would be a loss.
- Impossible entries. Entries are computed on already-closed bar prices with idealised fills: no slippage, no order queue, no way to know whether your price actually traded at that moment.
- An invented order of events. If both your target and your stop sat inside the same candle, which was hit first? Bars can't tell you. The engine assumes an order; reality may be the opposite.
The result is a beautiful curve printed over the past. It is not a trading simulation; it is a drawing.
The same system, measured properly
I repaired the strategy (it also had execution bugs) and ran it through the Strategy Analyzer with high order-fill resolution and 1-tick data: every stop, target and entry evaluated against the real path of price. The 90% became a 40% win rate. And note: a 40% win rate doesn't mean the system is bad — it depends on how much it wins when it wins versus what it loses when it loses. But it is a completely different system from the one the client thought he owned.
In my experience, between a well-made tick-by-tick backtest and a live account there is still usually a gap of around 10% either way (slippage, latency, news). Between the chart drawing and the live account, the gap can be an abyss.
How to tell whether your backtest is one of the misleading ones
- If your only evidence is the strategy loaded on a chart with its trades drawn on: that's exactly the case in this article.
- If the backtest shows a very high win rate (80–90%+) with tight stops: suspect the stops that "never trigger".
- If you use the Strategy Analyzer but never set high order-fill resolution with tick data, the problem is the same.
I've published a full guide on how to run a realistic backtest in NinjaTrader 8, step by step, with the exact settings.
The moral is not "don't trust NinjaTrader" — the platform does exactly what it says it does. The moral is that the chart is not a backtest. Before trading real money, or buying a strategy because of its curve, demand the tick-by-tick measurement. It's the difference between an imaginary 90% and a real 40%.
Frequently asked questions
ORB: an automated ORB strategy with public, real results
Traded on a live account, with the full trade log published and updated weekly. Try it free for 30 days before you decide.
See the ORB strategy See real results