A backtest that looks great and a strategy that works live are two different claims. This hub article ranks the seven reasons backtested strategies fall apart in real trading — costs and fills, overfitting, look-ahead bias, regime change, survivorship bias, small samples, and unrealistic fills — with the code and data smells that give each one away.
Backtested strategies fail live because the backtest measures a slightly different, easier game than the market actually plays. It runs on clean historical data with generous assumptions — instant fills at the price you wanted, no spread, survivors only, a rule set quietly tuned until the equity curve looked good. Live trading strips those assumptions away, and the edge that lived inside them disappears with them.
That is the honest frame for everything below. A backtest is not a prediction; it is a measurement of how a rule set behaved against one recorded slice of the past, under whatever assumptions you fed it. The failure modes in this article are ranked roughly by how often they turn a promising curve into a losing account — starting with the ones that get almost everyone. None of what follows tells you a strategy will make money. The point is the opposite: to show you the specific ways a result you already have may be lying to you, and how to detect each one before you risk capital. This is educational material about measurement quality, not trading advice, and it does not describe any profitable system.
Work through the seven in order. Each section says what the failure is, the detectable smell in your code or data, and — plainly — how common and how severe it tends to be.
The single most frequent reason a good-looking backtest dies on contact with a broker is transaction cost. Spread, commission, and slippage are small per trade and enormous in aggregate. A strategy that clears one pip of theoretical edge per trade is entirely erased by a one-pip spread, and you have not even paid commission yet. High-frequency and scalping systems are the worst hit because cost is a fixed tax on every round trip, so the more you trade the more of your notional edge you hand back.
The detectable smell: open your backtest configuration and look for commission set to zero, spread set to zero, or slippage left unmodeled. If any of those are blank, your equity curve is measuring a market that does not exist. A second smell is edge-per-trade smaller than a realistic spread — compute average profit per trade in pips and compare it to the typical spread on that instrument. If it is close, the strategy is a cost-collection scheme in reverse.
How severe: routinely fatal, and routinely invisible until live. Model it honestly with realistic spread and per-side commission, then re-run. Our deep dives on [slippage](/learn/slippage-explained) and [spread mechanics](/learn/spread-mechanics) show how to put defensible numbers in, and the [TradingView broker emulator](/learn/tradingview-broker-emulator) guide covers what these platforms do and do not simulate for you.
Overfitting is when your strategy has learned the noise in your historical data rather than any repeatable structure. Every extra parameter, filter, and hand-picked threshold is another degree of freedom you can bend until the curve fits the past perfectly — and fits the future not at all. This is not a fringe risk. Bailey and Lopez de Prado's work on backtest overfitting shows that when you try enough configurations, some will look excellent by pure chance, and the more you search the more certain you are to find a spurious winner. Their point is uncomfortable: a high Sharpe ratio, on its own, is weak evidence when it survived a large parameter search.
The detectable smell: a strategy with many parameters relative to the number of trades; thresholds set to oddly specific values (a stop at 37 pips, not 35 or 40); or a development history of trying dozens of variants and keeping the best. Another tell is a backtest that degrades sharply when you nudge any single parameter — genuine edges are usually robust to small changes; overfit ones sit on a knife-edge.
How severe: extremely common and the hardest to see from the inside, because it feels like diligence. The countermeasures are structural: separate [in-sample from out-of-sample data](/learn/in-sample-vs-out-of-sample), use [walk-forward analysis](/learn/walk-forward-analysis), and adjust your Sharpe for the number of trials with the [deflated Sharpe ratio](/learn/deflated-sharpe-ratio). Start with the full explainer on [overfitting and curve-fitting](/learn/overfitting-curve-fitting-explained).
Look-ahead bias is when your backtest uses information that would not have been available at the moment the trade was made. It is a leak from the future into the past, and it produces the most seductive equity curves of all — because a strategy that can see the future is, unsurprisingly, excellent. The classic version is acting on a bar's close price at any point during that bar, or using an indicator that silently references data the live system could not have had yet.
The detectable smell is specific and findable in code. Look for a signal computed on the current bar's close but executed within the same bar; indicators like a centered moving average or a repainting oscillator that revise past values as new data arrives; or any use of the full dataset — a global mean, a normalization constant, a max drawdown reference — computed once over the whole series and applied to earlier points. The giveaway pattern is a backtest that is suspiciously smooth, with entries that seem to catch turns a beat too early.
How severe: less common than cost or overfitting, but catastrophic when present, because it inflates results without limit and survives casual inspection. The fix is to enforce strict point-in-time discipline: at every bar, the strategy may only see what a live trader would have seen. The [look-ahead bias](/learn/look-ahead-bias) deep dive walks through the repainting and same-bar-execution traps in detail.
A strategy is fitted to the market conditions that existed in its test window. Regime change is what happens when those conditions end — volatility expands, a trending market goes range-bound, a central-bank policy era closes, correlations that held for years break. The strategy was never wrong about the past; the past simply stopped being representative. A trend-following system tuned across a decade of low-volatility trending can post beautiful numbers and then bleed steadily the moment the regime it depended on rotates out.
The detectable smell: a strategy validated on a single continuous period, especially a calm or strongly directional one. Break the equity curve down by year and by volatility environment — if the entire result comes from one favorable stretch and the rest is flat or negative, you have a regime-dependent strategy dressed up as an all-weather one. A backtest that has never seen a crisis, a rate-hike cycle, or a flash event has not been tested against the conditions most likely to hurt it.
How severe: common and genuinely hard to defend against, because you cannot backtest a regime that has not happened yet. You can only measure fragility. [Walk-forward analysis](/learn/walk-forward-analysis) re-fits and re-tests across rolling windows to expose regime dependence, and [Monte Carlo simulation](/learn/monte-carlo-simulation-backtests) stress-tests the result by resampling trades and shocking assumptions. Neither makes a strategy robust — they tell you how quickly it stops working when the world moves.
Survivorship bias is a defect in the data, not the logic. If your historical dataset includes only the instruments, symbols, or funds that still exist today, you are testing on a sample that was pre-selected for survival — and survival correlates with having gone up. Delisted equities, collapsed pairs, failed tokens, and merged tickers vanish from the record, and with them every loss they would have contributed. Your universe looks healthier than the real one ever was.
The detectable smell: ask where the symbol list came from. If it is 'today's tradable instruments' applied backward across years of history, the bias is baked in. For equities and crypto it is severe; the graveyard of delisted names is large and systematically worse-performing than the survivors. For major FX pairs the effect is smaller — currencies rarely delist — but it reappears the moment a strategy touches exotics, single-name CFDs, or a rotating basket. Another smell is a backtest whose universe membership is fixed at the end date rather than reconstructed point-in-time.
How severe: moderate in continuously-traded FX majors, serious in equities and crypto, and easy to overlook because the data looks complete. The defense is point-in-time universe reconstruction — include what was actually tradable on each historical date, delisted names and all. If you cannot source survivorship-free data, treat the result as an upper bound, not an estimate.
A backtest with too few trades has not measured an edge; it has measured luck. Thirty trades can produce a stellar win rate and a flattering Sharpe purely by chance, the same way thirty coin flips can land twenty heads. Small samples also interact viciously with overfitting: the fewer trades you have, the easier it is for a handful of lucky winners to carry the whole curve, and the less any parameter choice is actually supported by evidence.
The detectable smell is just a number — count the trades. A strategy with a wide confidence interval around its expected return is a strategy you cannot yet trust, and with small n that interval is enormous. Watch too for results driven by a few outsized wins: remove the top three trades and see whether the edge survives. If the whole result rests on two lucky months, the sample is effectively far smaller than the trade count suggests. Long-horizon strategies are especially exposed, because a decade of history might only yield a few dozen independent signals.
How severe: common and underrated, because a small sample can look statistically confident while carrying almost no information. There is no clever fix — you need more independent observations, a longer or broader test, or an honest acknowledgment of uncertainty. Our guide on [how many trades is enough](/learn/how-many-trades-is-enough) covers the statistics, and [Monte Carlo simulation](/learn/monte-carlo-simulation-backtests) helps quantify how wide your uncertainty really is.
The last failure mode is subtle and specific: even after you have modeled cost, your backtest may assume fills that the market would not have given you. It fills your limit order because price merely touched the level, when in reality you were behind a queue and never got done. It fills a stop at the exact stop price during a gap, when live you would have been slipped far worse. It executes your entire size instantly, ignoring that a larger order moves the market against itself. Each assumption quietly manufactures profit that no live account could have captured.
The detectable smell: limit-order strategies with a suspiciously high fill rate; stop and market orders filled at the requested price with zero adverse slippage; backtests that fill on the touch rather than requiring price to trade through the level; and any strategy whose results depend on being filled at extremes — the exact high or low of a bar. Size sensitivity is another tell: if the backtest returns the same per-unit result at one lot and at a hundred, it is ignoring market impact entirely.
How severe: moderate to serious, and concentrated in exactly the strategies that look best on paper — mean-reversion and limit-heavy systems that assume they always got the good price. The gap between an engine's assumptions and a real broker's behavior is the whole story here; our [MetaTrader backtest vs live](/learn/metatrader-backtest-vs-live) comparison and the [TradingView broker emulator](/learn/tradingview-broker-emulator) guide document where each platform's fill model diverges from reality.
Educational only — not financial advice. Trading involves substantial risk of loss.