## Simulating Historical Betting Performance
Backtesting applies your model's historical predictions to historical betting markets, simulating what profit you would have made if you had bet on the model's signals.
## The Backtesting Setup
For each historical match in your test period:
1. Calculate your model's probability at the time (using only information available before the match)
2. Compare to the available odds from historical odds databases (Pinnacle, BetBrain, Odds Portal)
3. Calculate EV: (Model probability / Implied probability − 1) × 100
4. If EV > threshold: record a simulated bet
5. Calculate P&L: (odds − 1) if match result matches selection; −1 otherwise
6. Aggregate across all simulated bets: total units staked, total profit, ROI
## Critical Requirements for Valid Backtesting
**No future data:** Model features must use only data available before the match. Rolling averages must be calculated on data up to but not including the match being predicted.
**Use closing odds, not opening odds:** Opening odds reflect initial estimates; closing odds reflect the market's best estimate after all information is processed. Your model should beat closing odds, not opening odds.
**Include all bets above threshold:** Do not cherry-pick. If your rule says "bet when EV > 3%," record every bet above this threshold — including losses. Cherry-picking surviving bets produces fictional backtested performance.
## Interpreting Backtested CLV
The most meaningful backtesting result: your model's predictions have positive average CLV against Pinnacle closing prices. If this is positive across 1,000+ historical matches: your model has demonstrated genuine historical edge.
Create a free account to track your progress and save bookmarks.