Four inputs. Team ratings: EPA per play on offense and allowed on defense, blending the current season with last season, last season fading as games get played. Elo: a running rating that moves with margin of victory and reverts partway each offseason, including playoff results. Quarterback: opponent-adjusted EPA per dropback for tonight's starter, measured against the team's own recent baseline so nobody gets counted twice. Home field. The margin is a straight line through those; the total is a straight line through both offenses and defenses; win probability is how often a margin that size holds up given the historical error. Fit on 1,855 regular season games, 2019 to 2025.
Not in the model: injuries other than at quarterback, offseason roster changes, weather, rest and travel, coaching, anything that happened after the last snap of the stat season. Read the conclusion for those.
Backtest, leaving each season out and predicting it with the others:
| games | picks | miss | market |
| weeks 1-3 | 333 | 64% | 9.7 | 63% |
| weeks 4-9 | 608 | 65% | 10.2 | 66% |
| weeks 10+ | 914 | 66% | 10.2 | 68% |
| all | 1855 | 65% | 10.2 | 66% |
Picks = share of games where the model's favorite won. Miss = average error on the margin, in points. Market = the same pick rate for the closing betting line.
Translation: it picks the winner about 65% of the time and misses the margin by 10 points on average. The betting market picks 66%, so this is within about a point and a half of Vegas. In weeks 1 through 3 it actually edges the market, 64% to 63%, because early lines are guessing from last year too. Expect it to be wrong about one week in three, and don't bet on it.
Elo, explained
Elo is a running rating that moves after every game by how much you won or lost by and how surprising the
result was. Beat a much better team by a lot and you take a big chunk of their rating. It reverts partway toward
average each offseason, because rosters change.
It catches things EPA per play does not. EPA measures how efficiently you moved the ball; Elo measures
whether you actually won, including in January. Seattle enters this season +141 Elo points ahead of
New England largely because of what happened in February, and that is worth
+3.7 points tonight. Playoff games count.
Quarterback, explained
Seattle
S.Darnold
assumed starterRating +0.058 EPA per dropback
Team baseline +0.057
Change +0.001 · 1,293 career dropbacks
New England
D.Maye
assumed starterRating +0.144 EPA per dropback
Team baseline +0.139
Change +0.005 · 914 career dropbacks
Team EPA ratings already contain whatever the quarterback did, so you cannot just add "good QB" on top or you
count him twice. Instead the model rates tonight's starter against the team's own recent quarterback baseline.
Same guy as usual, no adjustment. Backup in for an injured starter, big adjustment. A rating travels with the
quarterback when he changes teams, which is the entire point.
Both teams are starting the same quarterback they have been starting, so this adjustment is zero tonight. That is the correct answer, not a broken feature. D.Maye rates +0.086 EPA per dropback above S.Darnold, and that gap is already inside New England's team rating. Adding it again would count him twice.
The coefficient is +20.2 points per unit of EPA per dropback. A backup
who is 0.10 worse than the starter costs his team about 2.0 points.
The same regression rates defenses. Hardest to throw on: CLE (-0.16), PHI (-0.16), MIN (-0.15). Easiest: WAS (+0.06), TEN (+0.05), ARI (+0.03). Those numbers are what gets divided out of each quarterback.
It assumes the listed starter plays. If that changes before kickoff, so does this number.