NFL betting market analysis
Sportsbooks set an Over/Under line for every NFL game. Can a model built from public data (team strength, form, rest, travel, weather) beat it? I tested that the way a bettor would have lived it: each season predicted only from the seasons before it.
- Games tested
- 5,460
- Overall accuracy
- 51.7%
- Break-even
- 52.4%
- Under bets won
- 56.0%
The problem
A standard bet costs $110 to win $100, so a bettor has to be right 52.4% of the time just to break even. Betting lines are set by people with far more data than any public model, which makes even that small edge hard to find.
It's also easy to fool yourself. A model that sees future games while it trains, or settings tuned on the same games used to score it, can look like it beats the market when it doesn't.
Approach
- Data. 10,923 games from 1980 to 2024 with closing Over/Under lines, joined with stadium locations and game-day weather.
- Features. Elo ratings updated game by game, 3- and 5-game scoring form and volatility, rest days, away-team travel distance, temperature and wind.
- Choosing the model. Logistic regression and XGBoost were both tuned with Optuna, using only games before December 2003. XGBoost had the better validation score, so it was used from then on.
- Walk-forward testing. The last 5,460 games were split into five stretches. Each stretch was predicted by a model trained only on the games before it.
- Betting rules. Bet only when the model's win probability beats the 52.4% the odds imply. Pushes return the stake, and every bet is priced at −110.
Results
Picking a side in every game doesn't work. Across all 5,460 test games the model was right 51.7% of the time, below break-even, and only the most recent stretch (2020 to 2024, 54.7%) cleared it.
Being selective changes the picture. On a $5,000 bankroll:
| Strategy | Bets | Win rate | Return on stakes |
|---|---|---|---|
| Flat $50, any edge over break-even | 1,317 | 55.0% | +4.9% |
| Flat $50, edge of 3 points or more | 341 | 55.7% | +6.2% |
| Half Kelly, edge of 3 points or more | 341 | 55.7% | +3.6%, with a 56% drop along the way |
Nearly all of the edge comes from Unders: 56.0% across 1,109 Under bets, against 48.9% across 188 Over bets. That matches a pattern the betting market is known for: the public likes Overs, which can push totals slightly too high.
How sure is this? The 55.0% win rate is about 1.9 standard errors above break-even. That's encouraging but not proof, and it assumes every bet was placed at −110 on the closing line. Real books move lines and limit winning accounts.
Kelly sizing grows the bankroll fastest on paper, but half Kelly still lost more than half the bankroll at its worst point. With an edge this thin, flat stakes are the safer way to bet it. You can try every combination in the live demo.
What I'd do next
- Use real prices. Per-game odds from several books would show how much line shopping adds, and whether the edge survives once lines move.
- Add player data. Injuries and quarterback changes move totals, and team-level stats miss them.
- Keep testing forward. Each new season adds about 280 out-of-sample games, which is the only way to tell whether the Under edge is real.