Backtesting applies your rules to past data to see how they would have performed. It's the fastest way to find out whether an idea has any edge at all, and the easiest place to fool yourself.
Manual backtesting
For discretionary methods such as SMC and ICT, the most reliable approach is manual: step through historical charts bar by bar, without seeing the future, and record every trade your rules would have taken.
- Use bar replay (TradingView's Replay, or your platform's equivalent) so future candles are hidden.
- Pick a fixed period and market, and go through every day in it, not just the days you remember.
- Log each trade: date, setup, entry, stop, target, result in R, and a screenshot.
- Include costs: subtract spread and commission from every result.
- Aim for at least 50–100 trades before drawing conclusions.
Tool-based backtesting
Rules that can be coded exactly, such as a moving-average cross or a time-based breakout, can be tested automatically with TradingView's strategy tester (Pine Script) or MetaTrader's Strategy Tester (chapters 7 and 8). It's fast and consistent, but only as good as the code and the data.
The traps
| Trap | What happens | Defence |
|---|---|---|
| Look-ahead bias | Using information that wasn't available at the time | Bar replay; enter only on closed candles |
| Over-fitting | Tuning rules until they match the past perfectly | Keep rules simple; test on unseen data |
| Small sample | A great result from 15 trades | 50–100+ trades across different conditions |
| Cherry-picking | Testing only memorable days or obvious setups | Test every day in the period |
| Ignoring costs | Results that vanish after spreads and commission | Subtract real costs from every trade |
Key takeaways
- Backtesting applies your rules to past data to measure whether there's an edge.
- Manual bar-by-bar replay suits discretionary methods; coded tests suit mechanical rules.
- Avoid look-ahead bias, over-fitting, small samples, cherry-picking and ignoring costs.
- Keep unseen data aside and test on it last; aim for at least 50–100 trades.