Backtesting Pitfalls: 7 Mistakes That Will Destroy Your Strategy
Backtesting Pitfalls: 7 Mistakes That Will Destroy Your Strategy
A beautiful backtest means nothing if it's built on flawed assumptions. Here are the seven most common mistakes we see in AlphaNova submissions — and how to avoid them.
1. Survivorship Bias
You're only backtesting on stocks that still exist today. All the bankruptcies, delistings, and mergers are missing. Your backtest is too optimistic by 1-3% annually.
Fix: Use point-in-time data that includes delisted securities.
2. Look-Ahead Bias
Using information that wasn't available at the time of the trade. Common culprits:
- Earnings data before the announcement date
- Revised economic figures (GDP is revised 3 times)
- Index membership changes
3. Ignoring Transaction Costs
A strategy that trades daily with 100% turnover needs to generate ~25% annual alpha just to break even on costs.
# Realistic cost model
SPREAD_COST = 0.0005 # Half the bid-ask spread
MARKET_IMPACT = 0.001 # Price impact of your order
COMMISSION = 0.0001 # Broker commission
TOTAL_COST = SPREAD_COST + MARKET_IMPACT + COMMISSION # ~16bps per trade
4. Overfitting to the Backtest Period
If your strategy has 50 parameters tuned on 5 years of data, you've found noise, not signal. Fewer parameters = more robust.
5. Not Accounting for Slippage
You won't always get the closing price. In volatile markets, slippage can eat 5-10bps per trade.
6. Ignoring Capacity Constraints
A strategy that works on $100K may not work on $10M. If your signals trade illiquid small-caps, your actual fills will be worse than your backtest assumes.
7. Cherry-Picking the Start Date
Starting your backtest in March 2009 (market bottom) makes everything look good. Test across multiple market regimes — bull, bear, and sideways.
The AlphaNova Advantage
Our scoring engine accounts for many of these pitfalls automatically — we use realistic cost models, out-of-sample evaluation, and regime-diverse test periods. But it's still your job to avoid overfitting to the training data.