Start free

Backtesting

Why Your Backtest Doesn't Match Your Live Trading

Slippage explains the gap for algos. If you backtest by hand, 7 comparisons across backtest and live trades show if it's your strategy or your execution.

By Simone BenettiUpdated 7 min read

If you backtest by hand and live results fall short of your backtest results, the usual cause is simple: you didn’t trade the same way. Slippage, spread and latency are real, but they mainly matter for automated strategies. The difference between tested and live results is often called the reality gap. It is measurable, and the measurement tells you which part to fix.

The standard answer, and who it applies to

Search this question and most top results give the same list, written for automated traders. It runs through automation platform blogs, software wikis and the MQL5 community, where it is addressed to Expert Advisor developers:

  • Slippage: your fill isn’t the price you modeled
  • Spread: often modeled as fixed, when it widens at the worst moments
  • Latency: a delay between signal, order and fill
  • Data reconstruction: historical data approximates how price moved within each bar
  • Repainting indicators: past values change as new bars arrive, so the backtest looks far better than live trading
  • Overfitting: a strategy tuned so tightly to historical data that it captured noise instead of a pattern

Every item on that list is genuine. If you run an EA or a coded system, start there.

But notice what they have in common: they’re all infrastructure problems. They assume the trades themselves were identical and only the fills differed. For a discretionary trader, that assumption rarely holds.

The cause that matters when you trade by hand

That list rests on one assumption: you follow your rules exactly. In testing nothing is at stake. Live, every rule has to hold under pressure. If you backtest by hand, this is usually the larger part of the gap, and it is measurable.

Call it execution: how you carry out the plan. Which setups you take, how you size them, how you manage them once they are open. Here’s what an execution gap looks like in practice:

  • You skip trades live that you took in testing. The setup appears, looks uglier in real time than it did in review, and you wait for the next one. Your live strategy is now a subset of your tested one, and there’s no reason the subset shares its edge.
  • You take trades live that you’d have passed on. Quiet session, nothing happening, and a marginal setup starts to look acceptable.
  • You move stops. In the backtest the stop was a number. Live, it’s money, and it’s moving.
  • You close early. The winner reaches 1.2R, the trade has been open a while, and certainty feels better than expectancy.
  • You size by feel. Bigger after wins, smaller after losses. Your R results can match the backtest while your account does not, because size, not the setup, decided the outcome.
  • You were quietly selective while testing. Marginal setups in a backtest get resolved with a glance at what happened next. That’s not a rule; it’s hindsight with extra steps. In a BacktestFlow replay future bars are never served, so that glance isn’t available.

Every one of these produces the same symptom: live results below the test. None of them is fixed by modeling spread more accurately.

Why most traders can’t tell which is happening

The usual diagnosis compares a backtest summary with a live summary: “the backtest made 14R, I’m down 2R.” That proves a gap exists. It says nothing about where it came from. So the verdict defaults to “the strategy doesn’t work”.

A good strategy gets abandoned because of an execution problem. Or a broken one gets kept because the trader blames their own discipline. The two failure modes look identical at the summary level and completely different one layer down.

How to compare backtest and live trades

Run the same metrics over both sets of trades and compare them directly. Each comparison points at a specific cause:

What you compare What a gap means
Trade frequency Far fewer trades live: you’re skipping setups. Far more: you’re taking trades that weren’t in the plan.
Planned against captured R:R Captured below planned: you’re closing early or moving stops. Often the most telling number in the table.
Position sizing consistency Uniform in testing, scattered live: sizing by emotion.
Average R Similar frequency but lower R: management, not selection.
Checklist discipline (discipline score) Rules ticked in testing, skipped live: you know the rules and aren’t applying them under pressure.
Setups you passed on Many more live than in testing: hesitation is your leak. Note each one, so the count exists on both sides.
Breakdown by session and hour Different distributions: you’re trading at different times than you tested. Measure your own best session.

Here is what closing early costs, in plain arithmetic. Plan a 2R target at a 45% win rate and expectancy is 0.45 × 2 − 0.55 × 1 = 0.35R per trade. Close every winner at 1.2R instead, at the same 45% win rate, and it becomes 0.45 × 1.2 − 0.55 = −0.01R. Same setups, no edge left.

Closing early can lift the win rate a little, because some trades reach 1.2R and then reverse. But holding 0.35R per trade at a 1.2R target would take a win rate of about 61%.

The logic is simple: a strategy problem shows up as similar behavior producing worse outcomes. An execution problem shows up as different behavior. Once you can see which, you know whether to change the strategy or change how you trade it.

What makes this comparison possible

The comparison only works if backtest trades and live trades are measured the same way. If your backtest lives in a spreadsheet and your live trades in a journal app, the numbers aren’t comparable. Definitions, assumptions and rounding all differ.

In BacktestFlow the backtest and the live journal are two separate tools, on purpose. Trades you close in a replay session never land in your journal, and live trades you log never touch a backtest. What they share is the statistics engine: each has its own Statistics tab, built from the same calculations.

On Pro and Max, both tabs show all five sections, more than 40 metrics. Trade activity, planned against captured R:R, sizing consistency, discipline score and the session breakdown mean the same thing on either side. The free plan shows the Verdict and Edge sections on both.

The two Statistics tabs are separate by design: one measures the strategy, the other measures you. Read the same card in both and each row of the table above becomes a direct comparison. Setups you skipped can be recorded too, as case studies in a replay session. They stay out of your results and are reported as the cost of missed opportunities.

Flow Coach reads each side with its own lens. The backtest asks “where is your edge?”, the journal asks “can you execute it?”. It runs 16 analyses on backtests and 18 on the journal.

A finding is kept only if it passes a significance check: a 90% Wilson interval, with at least 8 trades in the group. A language model then narrates only the numbers the engine measured. The first journal report unlocks at 20 trades. Free and Pro get one report per strategy and lens; Max gets every report.

It’s also worth removing the causes you can control while testing. Manual backtesting done properly means future price is never visible and sizing follows a fixed rule. In BacktestFlow every close opens a write up, and the replay waits until it is saved. The sample can’t quietly lose the trades you’d rather forget.

The backtest then measures the trader you actually are, not an idealized one. For the full method, see how to run a manual backtest that records every trade.

Before you conclude the strategy is broken

One caution: make sure the gap is real before diagnosing it.

Twenty live trades against a 300 trade backtest is not evidence of divergence. It is a small sample doing what small samples do. At 20 trades, an observed 60% win rate carries a 95% Wilson score interval of 39% to 78%. That range is wide enough to include both a strong edge and a losing strategy.

A backtest win rate of 45% or 75% sits inside it, so a 15 point gap proves nothing yet. That is also why Flow Coach stays silent on any group smaller than 8 trades.

How many trades you actually need covers the math, and you can put error bars on your live win rate yourself. A live losing run can be ordinary variance too: check how long a normal losing streak runs before you blame anything. Give the comparison enough data to mean something before you act on it.

What to compare first

Slippage, spread and latency are real, and they are where automated systems should look first. If you trade by hand, the larger cause is usually that your live trades and your backtested trades are not the same trades.

Compare frequency, planned against captured R:R, sizing consistency and checklist discipline across both. Different behavior means execution. Similar behavior with worse results means strategy.


Nothing here is financial advice. Backtested performance does not guarantee future results.

FAQ

Questions this article answers.

For automated strategies the usual causes are technical: slippage, spread, latency and reconstructed price data. If you backtest by hand, the larger cause is usually execution. You took different trades, sized them differently, or managed them differently under live pressure. Both are real, and they need different fixes.

Some decline is normal, because costs and imperfect fills are real. A small, stable gap suggests friction. A large gap, or one that keeps widening, usually points to an overfitted strategy or an execution problem rather than trading costs.

Compare both sets of trades with the same metrics. Far fewer live trades means you are skipping setups. Captured risk to reward below planned means you are closing early or moving stops. Scattered sizing live against uniform sizing in testing means sizing is the leak. A strategy problem shows up as similar behavior producing worse outcomes; an execution problem shows up as different behavior.

The reality gap is the difference between a strategy's tested results and its results when you actually trade it. It combines trading costs, imperfect fills and the difference between calm decisions in review and decisions under live pressure. For traders who backtest by hand, that last part is usually the largest.

Keep future price hidden at all times and size every position by a fixed rule, not by feel. Record every setup, including the ones you passed on, and write up each close before moving on. A backtest that lets you skip the uncomfortable parts measures an idealized trader, not you.

References

Check the working. The sources behind the figures, and who wrote them up.

  1. Shane Lee, MQL5 Traders' Blogs, 9 August 2026: Backtest vs. Live: Why the Numbers Never Match Exactly. Lists tick simulation, broker spread, latency and slippage, for EA developers. Checked 9 October 2026.
  2. Wilson, E. B. (1927). Probable Inference, the Law of Succession, and Statistical Inference. JASA 22(158), pp. 209 to 212. The interval behind the sample size figures cited here.

Measure your own strategy. Replay the chart, trade it by hand and let the statistics tell you whether the edge is real. The free plan opens the Verdict and Edge sections; paid plans open all five, with more than 40 metrics.

Free planNo credit cardRuns in your browser