The NFL game model
Refreshed 2026-05-17. Scored on the held-out 2025 season.
- Predicts
- The margin and win probability of each NFL game.
- Inputs
- A team rating that leaves the quarterback out, a rating for each quarterback, and a situational layer (rest, divisional games, primetime, weather, stadium, home field, injuries). The betting line is not an input.
- How it is tested
- Trained on 2019-2024 seasons, then scored on the 2025 season held out of training, against FiveThirtyEight's published Brier score and the closing line's average miss.
- Headline result
- Loading the held-out 2025 numbers.
Summary
The model predicts each NFL game's margin and win probability from three parts: a long-running team rating that leaves the quarterback out, a rating for each quarterback that travels with him, and a final adjustment for rest, weather, primetime, division games, home field and injuries. The quarterback part was rebuilt in May 2026 to update from the quarterback's own play (passing value, completion accuracy and rushing) rather than from a share of the team's result. What that rebuild changed, including a problem we missed for six weeks until the public rankings exposed it, is below.
1. The team spine
Each team carries an Elo rating that updates after every game based on margin of victory, opponent strength, and home-field advantage. The design follows FiveThirtyEight's published NFL Elo system: a fixed K-factor, an MOV multiplier that grows with the margin but flattens at the tails (so a 40-point blowout doesn't over-credit the winner), and a small constant for home-field. The spine is the long-running league memory: it knows that the Chiefs are a top-tier organization regardless of which specific players started a given Sunday.
Crucially, the team spine is the team minus QB rating. When a quarterback changes teams, his personal Elo (next section) travels with him; the team Elo stays put and reflects the front office, scheme, roster depth, and coaching that don't walk out the door with the starter.
2. The quarterback rating (rebuilt in May 2026)
Each game, every QB's personal Elo is updated by an independent statistical composite computed from that game's play-by-play data:
+ 0.40 × (cpoe / 100)
+ 0.25 × (rushing_epa / carries) × rush_share
adjusted_value = game_value − (opp_def_value_allowed − league_avg)
game_elo_equivalent = adjusted_value × 250
weight = 200 / (career_dropbacks + 400)
qb_shift = clip(weight × (game_elo_equivalent − current_qb_elo), ±25)
The 0.60 EPA / 0.40 CPOE / 0.25 rushing weighting matches the 2019 FiveThirtyEight QB Elo design that Nate Silver published openly and aligns with the modern consensus on passing-value attribution. Opponent adjustment uses a per-team rolling eight-game average of opposing-QB VALUE allowed; weak defenses boost the adjusted value, elite defenses penalize it.
The empirical-Bayes sample-size shrinkage (the weight = 200 / (career_dropbacks + 400) term) means a rookie's first four starts move their Elo aggressively toward whatever they actually did on the field, while a veteran with 1,500 career dropbacks is anchored, one bad game only nudges Aaron Rodgers a few Elo points.
On the offseason, each QB's carried Elo is blended toward their draft-tier baseline (Top-10 / R1 late / Day-2 / Day-3 / UDFA) with a weight that decays exponentially with career dropbacks, true rookies start at the pure tier baseline, established veterans have effectively rolled the prior out of their rating. (See Finding 3 below for why this works and why the alternative of one-time threshold resets crashes Brier.)
3. The situational layer
After the team spine and QB ratings produce a baseline prediction, a situational layer adds a final adjustment for rest disparity, divisional rivalry, primetime games, weather (temperature + wind + precipitation), stadium-specific HFA, and the team's aggregate injury impact for the week. Each adjustment's size was set by a single scale factor fit on the training seasons, so the layer's contribution is measured rather than hand-weighted.
4. How accurate is this?
Loading calibration numbers…
Brier score measures probabilistic accuracy: lower is better, 0.25 is what you get from flipping a coin on every game, and a perfect predictor scores zero. FiveThirtyEight's published 2025 NFL Brier was 0.222. On the held-out 2025 games we scored —, a gap of — in our favor. The held-out season is the validation that matters for “does the methodology generalize.”
5. Scale interpretation, what do the QB Elo numbers mean?
QB Elo is centered on zero (replacement-level starter) with positive numbers indicating above-replacement play. The scale is calibrated to NFL game outcomes, which means a +30 to +50 Elo QB at peak is the elite tier. Even all-time greats sit roughly in that band when their team Elo is summed in.
A useful set of reference bands, derived from the historical Elo distribution in this system:
- Elite (+30 to +50): the top 5–10 QBs in a given season.
- Above average (+10 to +30): the rest of the top 15 or so.
- Average (−10 to +10): the broad middle of the league's starters.
- Below average (−30 to −10): backup-tier starters.
- Replacement (−100 to −50): practice-squad activations and struggling rookies.
All-time peak Elos in this system: Patrick Mahomes ~+81 (2018 MVP season), Lamar Jackson ~+97 (2019 MVP season), Josh Allen ~+54. Tom Brady's 2021–22 seasons still place him in the all-time top 10. Drake Maye sits at the top of the 2025 leaderboard at +63 as of the most recent snapshot.
6. What we discovered building this
Six findings from building this model are worth publishing. Two are technical results, three are “what we couldn't fix and why” notes, and the last is the story of the May 2026 rebuild.
Finding 1: A tuned scale factor hides both errors and upgrades
Fitting one overall scale factor on the training seasons is strong enough that improving the model underneath it barely moves the Brier score. An early version assumed a Questionable quarterback plays 75% of the time, a common rule of thumb. A later version learned from 10,344 starter-weeks that the real rate is closer to 65%, with real differences by position. Put into the model, the corrected estimate improved the Brier score by 0.0001 (essentially nothing), because the scale factor had already shrunk the rough estimate by about 0.7×.
Finding 2: Web-search feature pipelines can't be Brier-backtested
Brave Search (and Google, Bing) return the current indexed web. Any LLM scoring of past games will retrieve retrospective coverage that contains the outcome. We built a narrative-signal pipeline (Brave → Claude → JSON score) and verified the infrastructure works, reliability, cost tracking, contract adherence, but the first three-case probe demonstrated the leakage cleanly. NYJ 2023 W1 (Rodgers debut) scored −1.5 citing his Achilles injury, which happened during the game we'd be predicting. The pipeline ships as dormant infrastructure, accumulating data for a forward A/B that can actually be validated.
Finding 3: Continuous prior decay beats one-time threshold resets
Each QB's offseason starting Elo is blended toward their draft-tier baseline with an exponentially decaying weight on career dropbacks. We arrived at this design by failing first. The Brock Purdy problem (Mr. Irrelevant 2022, initialized at the Day-3 baseline of −100 and unable to climb out) suggested a one-time reset at, say, 100 career dropbacks. That experiment crashed 2025 holdout Brier from 0.2197 to 0.2249 (+0.0052), because the “reset target” (per-game-EPA shrinkage) was a noisier estimator than the carried Bayesian-updated Elo we were overwriting. Bryce Young 2024 crashed to −250 under that scheme.
The fix that worked uses continuous decay toward the stable tier baseline:
blended_elo = (1 − decay_weight) × regressed_carried_elo
+ decay_weight × tier_baseline
At zero dropbacks (true rookie) the decay weight is 1.0, the pure tier baseline. At 500 dropbacks (~3 seasons starting) it drops to 0.29 (moderate pull). At 1,500 dropbacks it's effectively rolled out at 0.02. This design matches the published methodology of nfelo and Nate Silver's QBERT, three independent NFL prediction systems converged on continuous decay, not threshold resets. 2025 Brier improved from 0.2197 to 0.2187 (−0.0010).
Finding 4: Scale compression in team-derived QB Elo
Before the May 2026 rebuild, our QB Elo was a fixed fraction of each game's team-margin error. Because the per-game team-Elo shift averages only a few points and the QB collected ~20–30% of that shift, the structural ceiling for in-season movement was about ±30 Elo. An elite QB on a team with strong supporting cast would help win games but only collect a sliver of the credit, then have 40% of those gains rolled off each offseason. The result was visible to anyone reading a leaderboard: elite QBs were compressed into a narrow band that contradicted individual-EPA rankings.
Brock Purdy is the canonical case. His individual EPA puts him in the top tier; his rating before the rebuild was around −14. SF's wins are produced by Shanahan's scheme, Trent Williams' tackle play, a deep WR/RB room, and a top defense, in addition to Purdy. The team-derived rating distributes credit across all of those.
This finding holds today as a published limit: our team Elo is the credit-shared signal, individual EPA tells you something different, and you should use both views together. Finding 6 below describes what we changed to narrow the gap.
Finding 5, what we couldn't fix: 2021/2022 in-sample misses
We tested on the 2021 and 2022 seasons during development with the hypothesis that aging veteran over-credit was the dominant problem (Rodgers post-MVP 2021 at age 38, Brady post-Super Bowl 2022 at age 45, both football-correct decline candidates). We fit per-bucket LOWESS curves on 444 QB-seasons and found the elite-bucket curve apparently goes UP from age 36 to 44, because the elite cohort past age 38 is dominated by Brady, Brees, Rodgers, and Manning, who survived in the elite cohort precisely because they aged well.
We made the conservative call: use the AVG-bucket curve shape for all QBs, flatlined at age 37. The mechanical consequence is that we produce no age-driven decline past 37, so the 2021 and 2022 in-sample fold targets missed (lift +0.0006 and +0.0002 against a +0.001 sub-gate). The walled-off 2025 out-of-sample holdout still improved (0.2218 → 0.2187), which is the validation that matters for whether the methodology generalizes. We did not reverse-engineer a decline parameter to make in-sample numbers look better; the rejected elite-bucket curve is preserved at findings_data/elite_age_curve_rejected.csv so anyone can audit the survivorship-bias finding.
Finding 6: Rating quarterbacks on their own play (the May 2026 rebuild)
Finding 4 documented that before the rebuild the QB Elo was structurally scale-compressed, and six weeks of Brier-based validation showed no measurable penalty for that. But when we shipped the rebuild to the public site and individual QB rankings became visible, the face-validity problem was obvious: Brock Purdy ranked below Bryce Young, every elite QB was compressed into a narrow ±30 band, and the rankings contradicted every published EPA leaderboard.
The May 2026 rebuild changed the QB-update step to derive each game's QB shift from the independent statistical composite shown in section 2, passing EPA, CPOE, and rushing share, opponent- adjusted, instead of slicing off a fraction of the team's margin signal. The new rankings overlap the 2025 EPA top-10 by 7 of 10 (up from 2–3 of 10 before). Drake Maye landed at #1 with +63; Jordan Love and Brock Purdy are now in the top tier where every individual-EPA measure already had them.
2025 holdout Brier moved by +0.0005 (within the ±0.002 tolerance band); the average over the training seasons improved by 0.0027. The information moved from the team layer to the QB layer; total calibration is preserved; individual QB rankings are now defensible. The team-minus-QB Elo is unchanged.
7. Known limitations
If you're consuming this model's predictions, you should know:
- Scale compression remains (Finding 4 + 6). The rebuild narrowed the gap between team-Elo-derived QB rankings and individual EPA, but the two are still distinct objects measuring different things. Use both views together.
- No age-driven decline past 37 (Finding 5). Our model will sometimes carry forward a veteran's Elo with insufficient decline. Survivorship bias in the elite-QB age data prevented us from supporting a falsifiable decline curve past 37.
- Late-week injury news is not captured. Friday-evening news doesn't make it into the Saturday- morning prediction.
- 2021 and 2022 in-sample folds are not fixed. Both seasons had high-impact mid-week roster volatility that no pre-game team-rating signal can capture, the same structural ceiling FiveThirtyEight's 2021 retrospective acknowledges.
8. Why we publish the limitations
The limits are listed above because anyone using these projections should know them. The findings (especially 3 and 6, the rebuild paths where the first attempt broke things and the diagnosis came from production face validity) are the kind of detail that distinguishes a defensible prediction system from a polished demo. This list will grow as new things break.
Methodology last refreshed 2026-05-17. Live calibration last updated —.