
Win probability
Game Prediction Model
- 20seasons of data2006–2025
- 5,133games trained on4,166 more held back for testing
- 64.7%called correctlyon games the model never saw
- ±2.1points of calibration driftwhen it says 70%, it happens about 70% of the time
A quarter of NFL games come down to a field goal, which is the ceiling every forecaster runs into. Predicting every game decided by more than a touchdown perfectly, and coin-flipping the rest, would still only reach 76.3%. Across 5,133 games, 2006–2025.
Where the model was wrong
Every miss from 2023 to 2025, out of sample. The model predicted 854 games over those three seasons and got 292 of them wrong, at 65.8% accuracy. What follows is the 292, sorted, explained, and in one section excused.
The finding that reframes the rest
Of the 292 misses, the betting market picked the same losing side in 253 of them (87%). Only 39 games , or 4.6% of the slate, are failures unique to this model. The rest are games the sharpest-priced market in sport also called wrong. Judging the model by its raw miss count measures the difficulty of predicting football, not the quality of the model.
- Games predicted
- 854
- Got wrong
- 292
- Median losing margin
- 5 pts
- Model-specific
- 39
Where the misses concentrate
By confidence band
| Band | Games | Wrong | Accuracy |
|---|---|---|---|
| Coin flip, no call | 145 | 62 | 57.2% |
| Low confidence | 164 | 61 | 62.8% |
| Medium confidence | 163 | 59 | 63.8% |
| High confidence | 382 | 110 | 71.2% |
The bands behave as they should. The model is not confidently wrong; it is uncertain and wrong, which is the honest failure mode, and the one a reader can act on, by ignoring the coin flips.
By how badly it lost
- 3 points or fewer107 · 36.6%
- 4–782 · 28.1%
- 8–1442 · 14.4%
- 15 or more61 · 20.9%
107 of 292 misses were lost by a field goal or less. Those are not misjudgments. A one-score game is near a coin flip whatever was known beforehand. The 61 lost by fifteen or more are the ones worth interrogating.
Its best and worst seasons
Every season the model was tested on, 2010 to 2025, covering 4,166 games, each predicted by a model trained only on the seasons before it. The bar is the model; the tick is the market on the same games. Bars start at 58%, not zero, because every season lands in a twelve-point range and a full axis would hide the differences.
- 201060.5%-5.8
- 201167.5%+0.4
- 201262.4%-4.1
- 201364.0%-6.2
- 201468.6%+0.4
- 201561.3%-2.1
- 201662.7%-2.0
- 201769.9%+0.4
- 201864.6%-0.8
- 201968.6%+3.9
- 202066.0%-1.1
- 202158.1%-4.2
- 202264.2%-2.1
- 202366.0%-1.4
- 202467.4%-3.2
- 202564.1%-1.8
Best season · 2017
69.9%- Market, same games
- 69.5%
- Model minus market
- +0.4 pts
- Misses
- 78 of 259
- Shared with the market
- 66 (85%)
- Model-specific
- 12
- Lost by 3 or fewer
- 18
- Calibration error
- 0.066
The market was near its own best that year too, and the season was unusually clean: 20% of games finished within a field goal, the lowest share in the record. Only 12 of its 78 misses were games the market got right. This is what the model looks like when football cooperates.
Worst season · 2021
58.1%- Market, same games
- 62.3%
- Model minus market
- -4.2 pts
- Misses
- 119 of 284
- Shared with the market
- 103 (87%)
- Model-specific
- 16
- Lost by 3 or fewer
- 39
- Calibration error
- 0.117
The market fell to 62.3% the same year, its worst season in the record, so most of this was the season, not the model. But not all: the model was also at its most confident (66.3% average) and its worst calibrated (error 0.117, against 0.066 in 2017). Confident and wrong is the expensive combination, and it is the one year the record shows it.
Why the good years are good
Across all 16 seasons, the model’s accuracy tracks the market’s at r = 0.63. Its worst season, 2021, was also the market’s worst season. That is the honest reading of the chart above: a good year is mostly a season that was predictable, and a bad one is a season that was not. The same model, fit the same way, produced 2017 and 2021. What changed was the football.
Measured against the market instead of against itself, the picture changes. 2019 is the model’s real high point, +3.9 points clear of the market on 258 games, the only season in the record it beat the closing line by more than a point. 2013 is the real low point: 64.0% looks respectable until you see the market at 70.2% on the same slate.
What the model could not see
Four candidate explanations, tested against the 292 misses. Three of them fail, which is what makes the fourth worth believing.
Turnovers
The explanationWeather
Not the culprit| Condition | Games | Accuracy |
|---|---|---|
| All games | 854 | 65.8% |
| Outdoors | 568 | 65.8% |
| Wind 15 mph or more | 52 | 75.0% |
| Freezing (32°F or below) | 55 | 67.3% |
Known injuries
HandledDivisional games
Real, but modestThe twenty worst
Ranked by confidence multiplied by losing margin, so these are the games where the model was both sure and badly beaten. “TO” is the turnover margin for the team it picked, and it is negative in most of them, which is the section above stated one game at a time.
| Game | Picked | Conf | Final | TO | Leading performer |
|---|---|---|---|---|---|
| 2023_05_NO_NE | NE | 60% | NO 34–0 NE | -3 | Alvin Kamara (NO): 80 rush yds, 17 rec yds |
| 2024_04_WAS_ARI | ARI | 69% | WAS 42–14 ARI | 0 | Jayden Daniels (WAS): 233 pass yds, 1 TD, 47 rush yds |
| 2025_11_LAC_JAX | LAC | 65% | LAC 6–35 JAX | 0 | Travis Etienne (JAX): 73 rush yds |
| 2024_02_NO_DAL | DAL | 76% | NO 44–19 DAL | -1 | Alvin Kamara (NO): 115 rush yds, 65 rec yds |
| 2025_03_ATL_CAR | ATL | 61% | ATL 0–30 CAR | -3 | Bijan Robinson (ATL): 72 rush yds, 39 rec yds |
| 2025_08_MIA_ATL | ATL | 73% | MIA 34–10 ATL | -1 | Tua Tagovailoa (MIA): 205 pass yds, 4 TD |
| 2023_19_CLE_HOU | CLE | 54% | CLE 14–45 HOU | -2 | C.J. Stroud (HOU): 274 pass yds, 3 TD, 1 rush yds |
| 2025_14_WAS_MIN | WAS | 53% | WAS 0–31 MIN | -3 | J.J. McCarthy (MIN): 163 pass yds, 3 TD, 19 rush yds |
| 2023_19_PHI_TB | PHI | 66% | PHI 9–32 TB | 0 | Baker Mayfield (TB): 337 pass yds, 3 TD, 16 rush yds |
| 2023_14_HOU_NYJ | HOU | 63% | HOU 6–30 NYJ | 1 | Breece Hall (NYJ): 40 rush yds, 86 rec yds |
| 2024_15_TB_LAC | LAC | 63% | TB 40–17 LAC | 0 | Mike Evans (TB): 159 rec yds |
| 2023_16_CIN_PIT | CIN | 62% | CIN 11–34 PIT | -3 | George Pickens (PIT): 195 rec yds |
| 2023_04_CIN_TEN | CIN | 59% | CIN 3–27 TEN | 0 | Derrick Henry (TEN): 2 pass yds, 1 TD, 122 rush yds, 11 rec yds |
| 2023_05_CHI_WAS | WAS | 70% | CHI 40–20 WAS | -2 | DJ Moore (CHI): 230 rec yds |
| 2023_17_CAR_JAX | CAR | 53% | CAR 0–26 JAX | -1 | Travis Etienne (JAX): 102 rush yds, 16 rec yds |
| 2024_03_DEN_TB | TB | 72% | DEN 26–7 TB | -1 | Bo Nix (DEN): 216 pass yds, 0 TD, 47 rush yds |
| 2023_03_HOU_JAX | JAX | 68% | HOU 37–17 JAX | -2 | Tank Dell (HOU): 145 rec yds |
| 2024_22_KC_PHI | KC | 75% | KC 22–40 PHI | -2 | Xavier Worthy (KC): 157 rec yds |
| 2024_06_JAX_CHI | JAX | 71% | JAX 16–35 CHI | -1 | Caleb Williams (CHI): 226 pass yds, 4 TD, 56 rush yds |
| 2024_07_SEA_ATL | ATL | 66% | SEA 34–14 ATL | -3 | Kenneth Walker III (SEA): 69 rush yds, 24 rec yds |
The honest limit
- 253 games the market also lost (87%): shared blind spots, not model defects.
- 107 decided by three points or fewer, outcomes no pre-game information could separate.
- 180 where the picked team lost the turnover battle, the largest single cause and close to irreducible.
- 39 genuine model-specific failures, and its confidence in those was modest.
Strip out the shared market misses, the one-score games and the turnover luck, and what remains is a small residue. That residue, not the 292 headline number, is the model’s real error, and it is not large enough to close the gap with a market that prices injury news and sharp money within minutes. The productive direction is not more features: wider sets scored worse. It is better probabilities on the games it already calls.
Put plainly: the model is not failing to understand football. It is running into the fact that a quarter of NFL games are decided by a field goal, and a fifth turn on a bounce nobody can forecast.
model-misses-2023-2025.html (prediction pipeline), reconciled against artifacts/oos_predictions.csv, model_dataset.csv and report_per_fold.csv.
Calibrated Logistic Regression (core + market features) · walk-forward by season (train on all prior seasons, test on the next)