NFL · state-space ratings · diagnostic
What we knew, versus what was true
A Kalman filter rates each team using only the games played to date. An RTS smoother re-rates the same weeks knowing how the season ended. The gap between those two lines is how badly the model misjudged a team at the time — and it is the view that answers whether these ratings pass a smell test, rather than whether their arithmetic is self-consistent.
- Mean misjudgment
- 1.39
- points, over 32 teams × 22 weeks
- Worst single week
- 7.76
- points, the largest gap any team opened
- Home-field miss
- 2.18
- points in 2019 — the known defect, still visible
That last tile is a positive control, and it is supposed to fail. Home-field advantage is pinned flat by construction, so the model cannot track the 2019 collapse — it estimated +2.3 while the league actually played to +0.1. A diagnostic that cannot surface a defect its author already knows about is not evidence about the ones they don’t.
Every team’s season, both ways
Solid is the causal filter — the rating through that week, using nothing later. Dashed is hindsight over the full season. They necessarily converge in the final week: at the last step there is no future left to condition on.
Conditions on future games. Display only — these numbers may never inform a prediction.
Who the filter misread
Mean absolute gap between the two lines across 2025. Select a bar to put that team in the chart above.
The control: home-field advantage
The model’s home-field estimate against what actually happened, 1999–2025. The model line barely moves — by construction. The real one collapses, then recovers.
The season that fails worst is 2019, not 2020. That is the more uncomfortable result: 2020 has an explanation anyone would accept — empty stadiums — while 2019 was played in front of full crowds and still ran a home margin of +0.09 points. A model that cannot move its home-field term cannot see either one, and only one of them has a story attached.
Table view — all 32 teams
| Team | Mean gap | Max gap | Final causal | Final smoothed |
|---|---|---|---|---|
| SEASeattle Seahawks | 3.51 | 7.76 | +11.1 | +11.1 |
| NENew England Patriots | 3.04 | 6.93 | +5.5 | +5.5 |
| JAXJacksonville Jaguars | 2.83 | 5.99 | +5.5 | +5.5 |
| NYJNew York Jets | 2.74 | 4.83 | −10.1 | −10.1 |
| ARIArizona Cardinals | 2.25 | 4.52 | −5.3 | −5.3 |
| LALos Angeles Rams | 2.04 | 5.33 | +8.1 | +8.1 |
| WASWashington Commanders | 1.97 | 5.81 | −3.8 | −3.8 |
| KCKansas City Chiefs | 1.81 | 4.20 | +0.4 | +0.4 |
| LVLas Vegas Raiders | 1.71 | 5.02 | −8.6 | −8.6 |
| HOUHouston Texans | 1.59 | 5.03 | +5.5 | +5.5 |
| TBTampa Bay Buccaneers | 1.50 | 3.52 | −1.1 | −1.1 |
| CHIChicago Bears | 1.48 | 3.85 | +1.5 | +1.5 |
| SFSan Francisco 49ers | 1.35 | 2.85 | +2.8 | +2.8 |
| DETDetroit Lions | 1.29 | 2.84 | +3.6 | +3.6 |
| GBGreen Bay Packers | 1.26 | 2.50 | +1.5 | +1.5 |
| CINCincinnati Bengals | 1.23 | 3.36 | −1.7 | −1.7 |
| INDIndianapolis Colts | 1.22 | 2.82 | +1.0 | +1.0 |
| BALBaltimore Ravens | 1.13 | 3.58 | +3.5 | +3.5 |
| DALDallas Cowboys | 1.11 | 2.99 | −3.5 | −3.5 |
| MINMinnesota Vikings | 1.09 | 3.85 | +1.5 | +1.5 |
| NONew Orleans Saints | 0.95 | 2.56 | −3.6 | −3.6 |
| MIAMiami Dolphins | 0.87 | 2.98 | −4.3 | −4.3 |
| NYGNew York Giants | 0.87 | 2.40 | −2.6 | −2.6 |
| PHIPhiladelphia Eagles | 0.85 | 2.01 | +3.1 | +3.1 |
| TENTennessee Titans | 0.74 | 3.26 | −7.5 | −7.5 |
| LACLos Angeles Chargers | 0.72 | 1.93 | +0.8 | +0.8 |
| ATLAtlanta Falcons | 0.71 | 2.69 | −2.4 | −2.4 |
| CARCarolina Panthers | 0.66 | 1.68 | −3.4 | −3.4 |
| BUFBuffalo Bills | 0.55 | 1.75 | +5.5 | +5.5 |
| CLECleveland Browns | 0.51 | 1.66 | −5.5 | −5.5 |
| PITPittsburgh Steelers | 0.50 | 1.68 | −0.6 | −0.6 |
| DENDenver Broncos | 0.46 | 1.20 | +3.3 | +3.3 |
How this is built
Two passes over one filter
A state-space model carries each team’s strength as a distribution that drifts week to week and reverts across an offseason. The forward pass is a Kalman filter: at week k it has seen weeks 1–k and nothing else. The backward pass is Rauch-Tung-Striebel, smoothed within the season, which revisits every week with the whole season in hand. Ratings are taken through each week — the state after that week’s games.
Why the dashed line is not a forecast
A smoothed week-4 rating is a function of weeks 5 onward. It is strictly better on every in-sample metric and means nothing as a prediction, which is exactly what makes it easy to misuse. Four tested barriers in the rating engine keep the smoother off every prediction path, and the payload behind this page carries a machine-readable non-causal stamp that the reader refuses to serve without. Nothing on this page is a projection.
Source: nflverse schedules, 1999–2025. Computed deterministically — never modeled by a language model. Built by scripts/build_nfl_hindsight.py (byte-reproducible), whose build gate reproduces the published 2024 validation cells before it writes.