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
23.2%decided by 3 points or fewer
47.5%decided by 7 points or fewer
8points, the median margin

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

BandGamesWrongAccuracy
Coin flip, no call1456257.2%
Low confidence1646162.8%
Medium confidence1635963.8%
High confidence38211071.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 explanation
When the model was right, its pick won the turnover battle by +0.82 per game. When it was wrong, that team lost it by -0.97, a swing of 1.79 turnovers per game between a correct prediction and an incorrect one, and 180 of 292 misses featured the picked team losing that battle. This is the largest gap between what the model knows and what decides games, and it is largely irreducible: the model carries takeaway and giveaway rates as rolling inputs, but a rate is not an event. Nothing pre-game predicts which Sunday a quarterback throws three picks.

Weather

Not the culprit
The intuition that bad weather breeds upsets is not supported. Ugly conditions appear to suppress variance: fewer possessions and a narrower playbook favor the better team.
ConditionGamesAccuracy
All games85465.8%
Outdoors56865.8%
Wind 15 mph or more5275.0%
Freezing (32°F or below)5567.3%

Known injuries

Handled
In the 96 games with a quarterback listed out, the model went 74.0%, better than its overall rate. A known absence is priced correctly because it is on the injury report and the model reads it. The injuries that hurt are the ones at 1:20pm: an in-game exit has no pre-game feature.

Divisional games

Real, but modest
Divisional games run 63.1% across 293 of them, against 67.2% on the 561 non-divisional. The familiarity cliché holds, but it is worth 4.1 points of accuracy, not the mythology attached to it.

The 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.

GamePickedConfFinalTOLeading performer
2023_05_NO_NENE60%NO 34–0 NE-3Alvin Kamara (NO): 80 rush yds, 17 rec yds
2024_04_WAS_ARIARI69%WAS 42–14 ARI0Jayden Daniels (WAS): 233 pass yds, 1 TD, 47 rush yds
2025_11_LAC_JAXLAC65%LAC 6–35 JAX0Travis Etienne (JAX): 73 rush yds
2024_02_NO_DALDAL76%NO 44–19 DAL-1Alvin Kamara (NO): 115 rush yds, 65 rec yds
2025_03_ATL_CARATL61%ATL 0–30 CAR-3Bijan Robinson (ATL): 72 rush yds, 39 rec yds
2025_08_MIA_ATLATL73%MIA 34–10 ATL-1Tua Tagovailoa (MIA): 205 pass yds, 4 TD
2023_19_CLE_HOUCLE54%CLE 14–45 HOU-2C.J. Stroud (HOU): 274 pass yds, 3 TD, 1 rush yds
2025_14_WAS_MINWAS53%WAS 0–31 MIN-3J.J. McCarthy (MIN): 163 pass yds, 3 TD, 19 rush yds
2023_19_PHI_TBPHI66%PHI 9–32 TB0Baker Mayfield (TB): 337 pass yds, 3 TD, 16 rush yds
2023_14_HOU_NYJHOU63%HOU 6–30 NYJ1Breece Hall (NYJ): 40 rush yds, 86 rec yds
2024_15_TB_LACLAC63%TB 40–17 LAC0Mike Evans (TB): 159 rec yds
2023_16_CIN_PITCIN62%CIN 11–34 PIT-3George Pickens (PIT): 195 rec yds
2023_04_CIN_TENCIN59%CIN 3–27 TEN0Derrick Henry (TEN): 2 pass yds, 1 TD, 122 rush yds, 11 rec yds
2023_05_CHI_WASWAS70%CHI 40–20 WAS-2DJ Moore (CHI): 230 rec yds
2023_17_CAR_JAXCAR53%CAR 0–26 JAX-1Travis Etienne (JAX): 102 rush yds, 16 rec yds
2024_03_DEN_TBTB72%DEN 26–7 TB-1Bo Nix (DEN): 216 pass yds, 0 TD, 47 rush yds
2023_03_HOU_JAXJAX68%HOU 37–17 JAX-2Tank Dell (HOU): 145 rec yds
2024_22_KC_PHIKC75%KC 22–40 PHI-2Xavier Worthy (KC): 157 rec yds
2024_06_JAX_CHIJAX71%JAX 16–35 CHI-1Caleb Williams (CHI): 226 pass yds, 4 TD, 56 rush yds
2024_07_SEA_ATLATL66%SEA 34–14 ATL-3Kenneth 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)