Overfitting (also called curve-fitting) occurs when you optimize a strategy's parameters so specifically to historical data that the strategy describes the past perfectly but fails in the future. It is the most common and costly mistake in backtesting — and the reason many strategies that look great on paper lose money live.
An overfitted strategy is like a key cut precisely for one lock — it opens the historical data perfectly but fits no other door.
How Overfitting Happens
Imagine testing RSI with periods 2 through 50. One of those periods will produce exceptional results purely by chance — not because RSI(17) has genuine predictive power, but because it happened to match the specific price patterns in your test data. When you select RSI(17) based on this result, you are fitting the indicator to noise, not signal.
Signs Your Strategy May Be Overfitted
| Warning Sign | What it Suggests |
|---|---|
| CAGR above 40% on daily data | Likely too good to be real — check for overfitting |
| Very few trades (under 20) | Small sample — results are not statistically meaningful |
| Performance degrades sharply on different symbols | Strategy is fitted to one specific symbol's quirks |
| Parameters are unusual (RSI period 17, EMA period 37) | Chosen by optimization, not logic |
| Out-of-sample performance much worse than in-sample | Definitive confirmation of overfitting |
| Max drawdown is suspiciously small | Parameters may be optimized to avoid specific past crashes |
The More Parameters, the Greater the Risk
Every additional parameter you optimize increases the risk of overfitting:
- 1 parameter (e.g., EMA period) — low overfitting risk
- 2–3 parameters (e.g., fast EMA + slow EMA + RSI filter) — moderate risk
- 5+ parameters — high overfitting risk — results are likely spurious
How to Avoid Overfitting
1. Use Standard Parameters
RSI(14) — not RSI(11) or RSI(17)
EMA(9) and EMA(21) — not EMA(8) and EMA(19)
MACD(12,26,9) — not MACD(10,23,7)
Standard parameters are used by millions of traders — they are more likely to remain valid because markets themselves react to these levels.
2. Test on Multiple Symbols
A robust strategy should work reasonably well across different NSE stocks and indices — not just the one you optimized it on. Test your strategy on at least 5 different symbols. If it only works on NIFTY but fails on HDFC Bank and Reliance, it is likely optimized to NIFTY's specific price patterns.
3. Test Across Different Time Periods
Divide your data into thirds and test the strategy on each third separately. A genuine strategy should show positive results across all three periods — not just one.
4. Walk-Forward Validation
Always validate with out-of-sample data. See the Walk-Forward Testing article for the full process.
5. The Simplicity Principle
The Monte Carlo Simulation Test
Another way to test robustness is Monte Carlo simulation — randomly shuffling the order of your historical trades and running the simulation thousands of times. If your strategy's performance holds up across thousands of random orderings, the results are statistically robust. If performance varies wildly, the strategy depends too heavily on the specific sequence of historical events.
Practical Robustness Checklist
- ✅ Parameters chosen by logic, not by optimization search
- ✅ Tested on at least 3 years of data including a bear market
- ✅ At least 50 trades in the backtest period
- ✅ Works on at least 3 different NSE symbols or indices
- ✅ Out-of-sample performance within 30% of in-sample performance
- ✅ Performance consistent across different 2-year sub-periods
- ✅ Maximum of 3 optimizable parameters