Back to Research
Backtesting · Dec 12, 2023

Why 90% of Backtests Lie — And How to Fix Yours

The most common mistakes traders make when testing strategies, and the slippage model that changes everything.
5 min read  ·  TradeMade Research Desk

Your backtest is a controlled hallucination. It shows you a world where you always got the price you wanted, where every stock you tested survived, where tomorrow's news never leaked into today's signal. None of that is real. And the gap between that world and the live market is where money disappears.

Here are the four lies most backtests tell — and specifically how to stop them.

90%
of retail backtests have at least one critical flaw
1–4%
annual return inflation from survivorship bias alone
0.05%
per-trade slippage that kills most "profitable" systems

The Four Lies

01

Look-Ahead Bias

Critical

Your code uses tomorrow's close to generate today's signal. Or you use an earnings number on the day the quarter closed — when in reality that report arrived 45 days later. The backtest never complains. It just quietly inflates every return. This is the hardest bug to catch because the code looks correct — you're just indexing one row off.

Fix →

Enforce strict point-in-time data access. Signal generated on bar t executes on bar t+1 open, always. For fundamental data, apply the actual filing date — not the period-end date.

02

Survivorship Bias

Critical

You're testing on stocks that exist today. That means every company that went bankrupt, got delisted, or was acquired between 2015 and now — vanished from your dataset. Your "universe" is pre-filtered by success. You're backtesting on the winners by definition, and wondering why the backtest always wins.

Fix →

Use a survivorship-bias-free dataset that includes all historical constituents — including delisted stocks. For Indian equities, Nifty 500 composition changes are publicly available and must be applied point-in-time.

03

Overfitting / Data Snooping

High

You ran 400 parameter combinations. The best one had a Sharpe of 3.1. You called it your strategy. But if you run 400 random strategies on any dataset, roughly 20 will show a Sharpe above 2.0 purely by chance. You found noise with a good costume. The moment market conditions shift even slightly, it collapses — because it never understood the market, it memorised it.

Fix →

Form your hypothesis first, then test. Use walk-forward optimisation — optimise on a rolling 2-year window, validate on the following 6 months, never revisit. Hold out a completely untouched out-of-sample period. Never touch it until the strategy is finalised.

04

Ignoring Realistic Transaction Costs

High

Most backtesting tools apply a flat ₹20 brokerage and call it done. That's not how the market works. When you place a market order for 500 lots of Bank Nifty during an RBI event, you don't fill at the mid. You fill wherever the order book has liquidity — which, in volatile moments, is significantly worse than you modelled.

Fix →

Model slippage as a function of order size, instrument liquidity, and volatility regime. Use VWAP or limit-order-based execution assumptions, not market-order fills at close.

The Slippage Model That Changes Everything

Most traders apply a fixed slippage — say, 0.05% per trade — and think they're done. That's better than nothing. But it misses the variable that destroys high-frequency and event-driven strategies: slippage scales with volatility and position size. A model that works fine when VIX is at 12 falls apart when it hits 22 — because your assumed fills were calibrated to calm markets.

Slippage Model Comparison

Same strategy. Different slippage assumptions. Opposite conclusions.

Naive Model
Slippage: flat 0.02%
Brokerage: ₹20/trade
Volatility: ignored
Order size impact: ignored
Backtest CAGR: +148%
Realistic Model
Slippage: vol-adjusted, size-aware
Brokerage: ₹20 + STT/exch
Volatility: regime-dependent
Order size: % of avg volume
Backtest CAGR: +31%

Same signals, same entry/exit logic. The only variable changed was the cost model. The 148% strategy never existed.

The formula most production quants use as a starting point for Indian equity options:

// Realistic per-trade cost estimate
Total_Cost = Brokerage + STT + Exchange_fees
+ (Slippage_base × VIX_multiplier)
+ Market_impact(order_size / avg_daily_vol)

// If this kills your edge — your edge was never real

"A strategy that survives realistic costs on 10 years of tick data across two market cycles — that's the first one worth deploying."

The Honest Backtest Checklist

Point-in-time data — signal on bar T executes on bar T+1 open
Survivorship-bias-free universe with historical index constituents
Walk-forward validation — no single in-sample optimisation window
Untouched out-of-sample holdout — never peeked during development
Vol-adjusted, size-aware slippage model
Full brokerage: STT + exchange charges + SEBI fees
Monte Carlo simulation over synthetic price paths
Tested across bull, bear, and sideways regimes
Free Backtest Access

Run Your Strategy on Tick-Level Data — We'll Show You Where It's Lying

TradeMade's engine applies every fix on this checklist automatically — 10+ years of tick data, walk-forward testing, vol-adjusted slippage, Monte Carlo. Drop your number and we'll run your first backtest free.

Tick-level accuracy Realistic slippage model Walk-forward built-in Monte Carlo stress test Options Greeks support 10+ years data
🇮🇳 +91

No spam. No cold calls. First backtest on us.

The best quants aren't the ones with the most creative strategies. They're the ones most ruthlessly honest about what their data is actually telling them. A backtest that survives every item on that checklist might show 30% CAGR instead of 150% — but that 30% is real. And real is the only number that matters.