Nine Reasons Your Backtest Doesn't Match Live Trading
A backtest and a live strategy drift apart for nine identifiable reasons, and slippage is only one of them. The biggest are the fill price, costs you didn't model, price moves inside a bar that the backtest can't see, and live behaviour no simulation reproduces, such as rejected orders and partial fills. Most of the gap can be measured once you know which reason you're looking at.
Every trader who has run a strategy live has had this moment. The backtest showed a clean equity curve. Six weeks in, the live account is somewhere else, and the strategy hasn't changed a line.
"Slippage" is the usual explanation, which is true and almost useless. Here is the full list, in rough order of how much damage each one does.
The nine reasons at a glance
| # | Reason | Who it hurts most |
|---|---|---|
| 1 | Fill price | Thin strikes, large orders |
| 2 | Moves inside a bar | Tight stops and targets, scalping |
| 3 | Costs left out | High-frequency strategies |
| 4 | Runs that should never have produced a result | Anyone comparing old reports with new ones |
| 5 | Signals that come from outside | TradingView, webhook and API-triggered strategies |
| 6 | Liquidity, partial fills, freeze limits | Far OTM options, multi-leg positions, size |
| 7 | Broker-side problems | Everyone, mostly on volatile days |
| 8 | Overfitting and look-ahead bias | Heavily tuned strategies |
| 9 | The contract changed | Anything tested before lot size or expiry changes |
1. Fill price is the biggest single source of divergence
A backtest fills your trade at a price taken from historical bar data. Live, you get what the order book offers at the instant your order arrives. On a liquid NIFTY option near the money, those two numbers may be close. On a thin strike, they may not be.
2. Price moves inside a bar are invisible
An engine that replays bars rather than ticks sees a few prices per bar, not the path between them. A level touched only briefly inside a bar can be missed altogether, and if your stop and your target both sit inside the same bar's range, the backtest can't know which was hit first.
Same bar, opposite outcomes. The bar data can't tell them apart
That's a property of bar data, not a defect. But it flatters a specific kind of strategy: tight stops with tight targets, scalping, and anything where entry and exit can trigger in the same bar.
3. Costs you didn't switch on
Set costs before you trust any result. The report's cost settings cover brokerage, slippage, STT, exchange charges, SEBI charges, GST and stamp duty, and show gross and net results side by side.
For a strategy aiming for a few thousand rupees a month, that isn't a rounding error. That is the strategy. More in understanding slippage.
4. A run that returns nothing is telling you something
A backtest can finish without filling a single trade. Under the previous engine, such runs could come back looking complete, and a thin report could be read as a thin result rather than a failure.
FastBT refuses instead: if a run can't produce an honest report, it says so and the credit is refunded automatically. If a strategy that used to return a report now returns fewer results, or is refused, that's the engine being more truthful, not less capable. Check this first when comparing an old report with a new one, before concluding the strategy has decayed.
5. Some strategies can't be backtested at all
If your strategy fires on signals pushed in from outside, such as a TradingView alert, a custom webhook or a third-party API, there's nothing to replay. The historical price data exists; your signal history doesn't. Any backtest you build for it tests an approximation of the signal, not the signal.
Validate these by running them Live Offline: the strategy runs and records every trade, but nothing is sent to the exchange. It's the only environment that exercises the real trigger path. If you use TradingView, see connecting TradingView strategies to Tradetron.
6. Liquidity, partial fills and freeze limits
A backtest assumes your order fills. Live, it may fill partly, late or not at all. This hurts most on far out-of-the-money options, on illiquid strikes a strategy picks when volatility moves, and on anything that scales into size. Above the exchange's freeze quantity, a single order is rejected and has to be split, which changes both your average price and your timing.
Multi-leg positions compound it. If one leg of a four-leg structure fails to fill, you're no longer running the strategy you tested; you're holding an unintended position. Make sure your strategy handles that case.
7. Broker-side reality
Between your strategy and the exchange sits a broker, with its own failure modes: order rejections, margin shortfalls, expired sessions, rate limits and occasional latency. A backtest has none of these; every order is accepted instantly.
So live results contain a tail of trades that didn't happen, or happened late, and they aren't spread evenly. They cluster on volatile days, when margin is tightest and order flow heaviest, which are often the days your strategy depends on.
8. Overfitting, look-ahead bias, and how to spot them
If you adjusted settings until the backtest looked good, you partly fitted the strategy to that stretch of history. Three tells:
- Trade count. A result built on thirty trades is noise wearing a chart.
- Regime coverage. Six months of a trending market tests one regime.
- Look-ahead bias. A rule that uses information not available at the moment it fires, most often a value from later in the same bar or session. A no-code builder like Tradetron's limits this by construction, since you compose conditions from fixed building blocks rather than arbitrary code, but it's not a full guarantee. A repainting indicator, whose past values change after the fact, causes the same symptom.
If a backtest looks unusually clean, check whether any condition could only have been evaluated with information from the future. Then widen the test window: there's little reason to test six months when years of data are available. Backtesting mistakes to avoid shows how overfitting fools you.
9. Your backtest may describe a different contract
Contract specifications change. NSE revised index derivative lot sizes from the January 2026 series, taking NIFTY from 75 to 65 and BANK NIFTY from 35 to 30. Weekly expiries have also changed: NSE now has one weekly index expiry (NIFTY, on Tuesday), and BANK NIFTY has monthly expiries only. A backtest over older periods reports rupee figures on the old contract sizes and may trade expiries that no longer exist. Percentage results stay broadly informative; absolute profit, loss and drawdown don't. See what to check after the lot size change.
Coverage is less of a constraint than it was: FastBT runs across NSE F&O and cash, BSE, MCX, crypto and US markets, with custom Python and list-based strategies supported. If you previously worked around a market the old engine didn't cover, that workaround may now be adding error.
How to close the gap
- Before you run: turn on costs and use a slippage assumption that's pessimistic rather than typical.
- Before you run: widen the window until it includes a period that should have hurt the strategy.
- After you run: test it Live Offline long enough to collect a meaningful number of trades. It's the only step that shows rejections, partial fills, delays and external signals.
- After you run: go live at the smallest real size, and compare live fills with backtest fills trade by trade before scaling up.
How to reconcile a live strategy against its backtest
Almost nobody does this, and it turns a vague disappointment into a number you can act on. Download the trades from your backtest report and your live trade log for the same period, then work through four questions in order:
| Question | If the answer is no or large | What it means |
|---|---|---|
| Did the same trades trigger? Compare entry times. | Live took different or fewer trades | A signal or execution problem, not a cost problem. Adjusting costs won't fix it |
| What was the fill difference? Average live fill minus backtest fill per trade. | A consistent gap | That's your real slippage for this strategy. Put it into the costs and re-run; most of the gap usually closes here |
| What's left? | A small, stable residue | Usually partial fills or how the strategy is deployed. Expected if small |
| Does the residue grow with volatility? | Worst on the days the market moved most | Liquidity and broker effects (reasons 6 and 7). Fix with size and order handling, not by rewriting the logic |
For reading the report itself, see the backtesting guide and how to evaluate a strategy's performance. Our State of Retail Algo Trading in India 2026 report shows how these patterns play out across the platform.
Frequently asked questions
Why is my backtest profitable but live trading is not?
The most common causes are costs that weren't modelled, differences in fill price, and live behaviour no simulation reproduces, such as partial fills and rejected orders. Reconcile trade by trade to find which applies instead of assuming it's slippage.
Does Tradetron's backtest let me assume the worst price?
No. Best price, worst price and bid-ask average are live order-execution settings for a deployed strategy, not backtest options. Model a pessimistic fill through the slippage cost instead.
Does the backtest include brokerage and taxes?
It can. Set costs covering brokerage, slippage, STT, exchange charges, SEBI charges, GST and stamp duty, and the report shows gross and net results side by side.
Why does my strategy return fewer backtest results than it used to?
FastBT refuses to produce a report it can't generate honestly and refunds the credit automatically, rather than returning a finished-looking run with no fills. Fewer results in that case means the engine is being more accurate.
Can I backtest a strategy that runs on TradingView alerts?
Not meaningfully. Externally triggered strategies fire on signals that were never recorded historically, so there's nothing to replay. Test them Live Offline instead.
How much slippage should I assume?
Measure it rather than guess. Run the strategy live at a small size, compare each live fill with the backtest fill, and use the average difference.
Are backtest results from before January 2026 still valid?
Percentage results remain broadly informative, but rupee figures reflect the older lot sizes, and some tested expiries no longer exist. Re-run before using them to size capital.