A backtest can lose much of its apparent edge when fills assume prices and liquidity that would not have been available in live trading. Fees and a fixed slippage setting leave out timing, order priority, partial fills, spread changes, and the price movement your own order can trigger.
In September 1999, NASA lost contact with the Mars Climate Orbiter during its approach to Mars. The investigation found that a Lockheed Martin software output used pound-seconds while NASA’s navigation team at Jet Propulsion Laboratory in Pasadena worked in metric units. Arthur G. Stephenson’s NASA investigation board documented how the mismatch passed through the process until the spacecraft reached Mars on the wrong trajectory.
The numbers inside each system could look reasonable. The result was still wrong because the assumptions connecting them did not match.
A backtest has the same weak point. Entry and exit prices may appear in the report as completed facts. In a live market, they are requests competing with other orders.
Treat each fill as a claim to audit
Open the trades list from a promising backtest and choose ten entries across quiet, volatile, and high-volume periods. For each one, ask what order would have been sent and what had to happen for that fill to occur.
A market order needs available liquidity at the moment it reaches the venue. A limit order needs price to trade through it, with enough size remaining after orders already ahead of yours. A stop order can become a market order during a fast move, which means the backtest’s stop price may describe the trigger rather than the exit.
This distinction matters most when a strategy trades at obvious moments: breakouts, opens, closes, news candles, funding resets, and liquidation-driven crypto moves. Those are often the moments when the displayed price is least available.
A useful audit column set is:
- Signal timestamp.
- Assumed order type.
- Assumed fill price.
- Bid and ask at the signal.
- Bar high and low.
- Available volume near the fill price.
- Time allowed before the order is cancelled.
- Actual exit rule after a partial fill.
If the test enters at a candle’s close, be precise about what that means. A signal calculated from the completed candle cannot normally fill at that same completed closing price. The order arrives after the calculation. The next available price may be different, especially after a sharp move.
Fixed slippage hides changing market conditions
A flat estimate, such as a few basis points per trade, is better than assuming perfect fills. It can still give false confidence when the strategy’s returns depend on a small average gain.
Slippage changes with spread, volatility, instrument liquidity, order size, and time of day. A $200 order in a heavily traded stock has different execution conditions from a larger order in a thin crypto pair. The same symbol can behave differently during a calm afternoon and during a rapid reversal.
Rerun the backtest with several execution scenarios:
- A modest baseline for ordinary conditions.
- A wider spread and delayed entry scenario.
- Partial fills for limit orders.
- Worse exits during the largest adverse candles.
- A rule that skips trades when quoted spread or available volume crosses a threshold.
Keep the assumptions visible. The goal is not to find the harshest possible result. It is to find out whether the strategy still has room for the uncertainty it will face.
If the apparent edge falls from 12% to 6% under plausible fills, that does not automatically invalidate the idea. It changes the question. You now need to decide whether the remaining result survives position sizing, drawdown limits, and the discipline required to execute it. [Max drawdown and position size]( /blog/max-drawdown-explained-how-position-size-consecutive-losses-and-stop-loss-discipline-interact-with-worked-examples-for-retail-traders-and-no-promised-outcomes-educational-content-n-315be2ad/) belong in that decision.
The bar high and low do not prove your trade filled
A common backtest shortcut assumes a limit buy filled because the candle’s low reached the limit price. That proves the market printed that price. It does not prove your order received enough priority or size.
Suppose a strategy places a buy limit at $100.00 after a signal. The next bar ranges from $99.95 to $100.40. A simple backtest records a fill at $100.00. In live trading, price may have touched $100.00 before the order reached the book, traded only a small amount there, or moved through the level during a fast sequence. A partial fill changes the position size. A missed fill changes the entire trade sequence.
The same issue appears at exits. A backtest may let a profit target and stop-loss both execute within one bar without knowing which occurred first. If the bar touched both prices, the order sequence is unknown unless you have intrabar data and execution rules that resolve it.
Write those rules before looking at the revised performance. Otherwise the rules can drift toward whichever result preserves the original edge.
Build the audit into the approval step
NASA’s failure was not caused by one calculation alone. A critical assumption travelled between systems without a reliable check. Trading plans need visible checks at the moment a proposed order becomes a real order.
Before approving a queued trade, compare the planned entry with the current bid, ask, spread, and available liquidity. Confirm whether the planned position can be filled without exceeding the risk limit. If the market has moved beyond the backtest’s entry window, reject the order or reduce size according to a rule written in advance.
That approval gate creates a record of the gap between research and execution. Over time, compare assumed fills with actual fills by instrument, setup, volatility level, and time of day. The result is more useful than a single polished equity curve: it shows where the strategy’s assumptions hold and where they fail.
The Mars Climate Orbiter reached Mars with an assumption mismatch that had survived earlier checks. A trading system can reach live execution with the same problem. Make the fill assumption explicit before capital depends on it.
Educational content: not financial advice.
Comments
No comments yet.