Why most backtests lie
The five habits that turn a losing strategy into a beautiful equity curve, and the checks that expose each one.
A backtest is a claim about the past. Most claims fall apart for one of five reasons, and all five are easy to spot once you know their names.
1. Look-ahead bias
The strategy uses information that did not exist yet. The classic version is acting on a candle's close inside that candle. If a signal is confirmed at the close, the earliest honest fill is the next open.
A backtest that fills at the same close it measured is not optimistic. It is impossible.
2. Survivorship and symbol shopping
Testing twenty symbols and reporting the best one is not a result, it is a selection. If you tried twenty, the honest headline is the median of twenty.
3. Costs quietly omitted
Fees and slippage are charged on the traded notional, on both sides. A strategy averaging 0.3% per trade dies instantly at 0.1% per side. High-frequency rules are the ones this kills, which is exactly where curve-fitting is easiest.
4. Optimising and reporting the same data
Sweep forty parameter sets, keep the best, report its numbers — and you have reported the luckiest draw, not the expected one. The fix is unglamorous: pick the winner on a training window, then measure it once on candles the search never touched.
5. Drawdown measured on closed trades only
Closed-trade drawdown ignores what the position did while it was open. Your account felt the open loss even if the trade later closed green. Peak-to-trough on the equity curve is the number that matters.
The checklist
| Check | What honest looks like |
|---|---|
| Fill timing | Signal on close, fill at next open |
| Costs | Both sides, on actual notional |
| Sample size | Trade count printed beside every rate |
| Selection | Out-of-sample measured once |
| Drawdown | Peak-to-trough on equity, not closed trades |
If a report will not tell you these five things, it is not telling you the result either.