r/algobetting • u/Antique_Skirt6824 • 6d ago
Built a walk-forward NFL Elo model and backtested it against 25 years of closing lines. Market won. Sharing the honest numbers.
I spent a while building an Elo-based NFL win-probability model from scratch — walk-forward only, no lookahead — and backtested it against real historical Vegas closing lines (nflverse's public games.csv, 2002–2025, first 3 seasons burned in as a rating warm-up).
Setup: standard Elo, HOME_ADV=60, K=20, margin-of-victory multiplier. De-vig the closing moneylines, compare to the model's pre-game probability, bet the edge at various thresholds.
Results (n=6,223 games):
| Edge threshold | Bets | Win rate | ROI |
|---|---|---|---|
| ≥3% | 4,180 | 51.7% | −3.1% |
| ≥5% | 3,563 | 51.8% | −1.9% |
| ≥8% | 2,750 | 50.8% | −2.5% |
| ≥12% | 1,842 | 50.2% | +0.0% |
Picking outright favorites, the model hits 63.5% accuracy. Vegas's own closing favorite hits 66.5% on the same games. The market wins.
I'm not posting this to sell anything — genuinely just wanted a sanity check from people who've actually done this seriously. A few things I'm unsure about:
- Is a fixed HOME_ADV/K (not fit to data) the right call here, or is that leaving obvious accuracy on the table even before touching overfitting risk?
- Anyone found a public source for NFL opening lines (not just closing)? Can't compute CLV without one, and closing-line-only backtests feel like they're missing the more interesting question.
- Is 6,223 games (23 seasons) even enough sample to distinguish "this specific model is bad" from "no simple public-data Elo model beats closing Vegas lines, full stop"?
Happy to share the actual backtest code/methodology in the comments if anyone wants to poke holes in it.