Model accuracy
Does the number hold up?
Every 2025 game replayed with the rating each team carried before that game — the same calculation the site shows for Week 1, with no hindsight. Then the 2026 season, tracked game by game as results land.
Tuning
Fitted to 2025, not to a textbook
The model started with the usual Elo defaults. Each constant was swept against the 272 stored 2025 games, fit on Weeks 1-13 and validated on Weeks 14-18 — a setting only survives if it also helps on games it was not fit to. Log loss is the objective; anything worth less than 0.002 was left at its round-number default.
Straight-up
61.8% → 64.0%
held-out weeks 64.1% → 69.2%
Brier score
0.226 → 0.222
held-out weeks 0.225 → 0.216
Log loss
0.644 → 0.634
held-out weeks 0.637 → 0.618
| Constant | Was | Now | Held-out LL |
|---|---|---|---|
K-factor With the weekly decay in place a slightly faster K grades best; 24-32 are all inside a point of each other. | 26 | 28 | -0.0004 |
Home field Home teams went 142-123 (.536) in 2025 — worth roughly 25 rating points, not the 55 the textbook default assumes. | 35 pts | 25 pts | -0.0006 |
In-season decay Ratings bleed 10% back toward 1500 every week, so September results stop carrying December games. | none | 10% per week | -0.0028 |
Scoring blend Mixing season point differential into the pre-kickoff rating was the biggest single gain — Elo grades wins, this remembers how they were won. | 0% | 25% after 4 games | -0.0015 |
MOV dampener Flat from 1.6 to 3.0 — the blowout dampener barely moves the grade. Left alone. | 2.2 | 2.2 | kept |
Spread divisor 22 cut margin error from 10.265 to 10.255 points per game. Noise, so the round number stays. | 25 | 25 | kept |
Offseason regression 30-35% graded a hair better on the in-season proxy, inside the noise guard. | 25% | 25% | kept |
Blend weights Elo already prices margin of victory, so the scoring terms were double-counting it. | 55 / 20 / 15 / 10 | 80 / 5 / 15 / 0 | -0.0059 |
Honest read: the change that mattered was giving the pre-kickoff rating a memory of scoring margin, not just wins, and letting old results fade 10% a week. Trimming home field to 25 points — home teams went 142-123 (.536) in 2025 — helped at the edges. Together they lifted the 2025 backtest from 62.5% to 64.0% straight up and cut the Brier score from 0.224 to 0.222. That is real but modest; NFL Elo does not have much more room than this, and every number here is fit on the same season it is graded on.
Straight-up
64.0%
174 of 272 winners called in 2025
Brier score
0.222
Lower is better. 0.25 = always guessing 50/50
Avg spread error
10.3 pts
44% of games within a touchdown
Log loss
0.635
Penalises confident wrong calls hardest
Accuracy by confidence band
The bands on every matchup card, judged against reality. A "Strong" call should win far more often than a "Lean".
Coin flip
57%
54-40 · claimed 53%
Lean
62%
58-35 · claimed 59%
Confident
66%
37-19 · claimed 70%
Strong
86%
25-4 · claimed 79%
Calibration
When the model says 70%, does it win 70% of the time?
Grey bar: what the model claimed. Coloured bar: what actually happened. A well-calibrated model has them roughly equal in every band.
2026 season tracker
66 of 107 correct · 62% · 14 still to play
Straight-up
62%
66 of 107 final games
Brier score
0.233
2025 backtest ran 0.222
Avg spread error
9.5 pts
2025 backtest ran 10.3 pts
| Week | Game | Final | Model pick | Spread | Result |
|---|---|---|---|---|---|
| Wk 7 | DAL at PHI | 38–21 | PHI 53% | PHI −0.9 | Miss |
| Wk 7 | KC at SEA | 3–20 | SEA 53% | SEA −0.9 | Hit |
| Wk 7 | GB at DET | 17–20 | DET 55% | DET −1.3 | Hit |
| Wk 7 | LAR at LV | 35–21 | LAR 50% | LAR −0.1 | Hit |
| Wk 7 | DEN at ARI | 30–16 | DEN 67% | DEN −4.9 | Hit |
| Wk 7 | CLE at TEN | 27–24 | CLE 60% | CLE −2.7 | Hit |
| Wk 7 | NYG at HOU | 27–21 | HOU 61% | HOU −3.1 | Miss |
| Wk 7 | MIA at NYJ | 28–25 | NYJ 56% | NYJ −1.6 | Miss |
| Wk 7 | TB at CAR | 43–13 | CAR 66% | CAR −4.7 | Miss |
| Wk 7 | CIN at BAL | 35–13 | BAL 51% | BAL −0.4 | Miss |
| Wk 7 | IND at MIN | 10–16 | MIN 78% | MIN −8.7 | Hit |
| Wk 7 | SF at ATL | 20–29 | SF 67% | SF −4.9 | Miss |
| Wk 7 | PIT at NO | 16–10 | PIT 61% | PIT −3.1 | Hit |
| Wk 7 | NE at CHI | 24–30 | NE 54% | NE −1.1 | Miss |
| Wk 6 | WSH at SF | 17–23 | SF 77% | SF −8.2 | Hit |
| Wk 6 | DAL at GB | 13–23 | GB 59% | GB −2.5 | Hit |
| Wk 6 | LAC at KC | 6–22 | KC 75% | KC −7.6 | Hit |
| Wk 6 | BUF at LV | 33–30 | BUF 62% | BUF −3.4 | Hit |
| Wk 6 | ARI at LAR | 18–16 | LAR 70% | LAR −6.0 | Miss |
| Wk 6 | TEN at IND | 26–20 | IND 66% | IND −4.7 | Miss |
| Wk 6 | BAL at CLE | 10–13 | BAL 58% | BAL −2.2 | Miss |
| Wk 6 | NO at NYG | 34–27 | NYG 64% | NYG −3.9 | Miss |
| Wk 6 | CAR at PHI | 25–14 | CAR 57% | CAR −1.9 | Hit |
| Wk 6 | PIT at TB | 26–19 | PIT 54% | PIT −1.2 | Hit |
| Wk 6 | NYJ at NE | 19–26 | NE 71% | NE −6.1 | Hit |
| Wk 6 | CHI at ATL | 31–23 | ATL 53% | ATL −0.9 | Miss |
| Wk 6 | HOU at JAX | 34–31 | JAX 65% | JAX −4.4 | Miss |
| Wk 6 | SEA at DEN | 14–17 | DEN 50% | DEN −0.0 | Hit |
| Wk 5 | BUF at LAR | 37–34 | LAR 60% | LAR −2.8 | Miss |
| Wk 5 | BAL at ATL | 30–23 | ATL 68% | ATL −5.3 | Miss |
| Wk 5 | SF at SEA | 32–29 | SEA 57% | SEA −1.9 | Miss |
| Wk 5 | DET at ARI | 45–21 | DET 55% | DET −1.5 | Hit |
| Wk 5 | DEN at LAC | 23–17 | DEN 65% | DEN −4.4 | Hit |
| Wk 5 | MIN at NO | 23–13 | MIN 68% | MIN −5.2 | Hit |
| Wk 5 | CLE at NYJ | 12–17 | CLE 65% | CLE −4.3 | Miss |
| Wk 5 | NYG at WSH | 27–27 | NYG 61% | NYG −3.0 | Miss |
| Wk 5 | CIN at MIA | 31–24 | CIN 64% | CIN −4.1 | Hit |
| Wk 5 | IND at PIT | 22–34 | PIT 55% | PIT −1.5 | Hit |
| Wk 5 | HOU at TEN | 26–3 | HOU 54% | HOU −1.2 | Hit |
| Wk 5 | LV at NE | 17–45 | NE 53% | NE −1.0 | Hit |
| Wk 5 | CHI at GB | 7–31 | GB 55% | GB −1.3 | Hit |
| Wk 5 | PHI at JAX | 17–19 | JAX 75% | JAX −7.6 | Hit |
| Wk 5 | TB at DAL | 24–16 | DAL 77% | DAL −8.4 | Miss |
| Wk 4 | ATL at NO | 45–24 | ATL 53% | ATL −0.9 | Hit |
| Wk 4 | DET at CAR | 26–32 | DET 52% | DET −0.5 | Miss |
| Wk 4 | DEN at SF | 14–24 | SF 60% | SF −2.9 | Hit |
| Wk 4 | KC at LV | 30–27 | LV 53% | LV −0.7 | Miss |
| Wk 4 | LAC at SEA | 23–30 | SEA 81% | SEA −10.3 | Hit |
| Wk 4 | MIA at MIN | 10–15 | MIN 75% | MIN −7.6 | Hit |
| Wk 4 | GB at TB | 17–14 | GB 64% | GB −4.0 | Hit |
| Wk 4 | DAL at HOU | 34–30 | HOU 58% | HOU −2.3 | Miss |
| Wk 4 | NE at BUF | 29–26 | BUF 58% | BUF −2.1 | Miss |
| Wk 4 | TEN at BAL | 18–24 | BAL 64% | BAL −4.1 | Hit |
| Wk 4 | LAR at PHI | 24–20 | LAR 57% | LAR −2.1 | Hit |
| Wk 4 | NYJ at CHI | 12–23 | CHI 57% | CHI −2.0 | Hit |
| Wk 4 | JAX at CIN | 22–17 | JAX 60% | JAX −2.8 | Hit |
| Wk 4 | ARI at NYG | 24–36 | NYG 61% | NYG −3.3 | Hit |
| Wk 4 | IND at WSH | 30–13 | IND 69% | IND −5.7 | Hit |
| Wk 4 | PIT at CLE | 24–27 | CLE 51% | CLE −0.4 | Hit |
| Wk 3 | PHI at CHI | 7–27 | PHI 61% | PHI −3.2 | Miss |
| Wk 3 | LAR at DEN | 26–30 | DEN 62% | DEN −3.4 | Hit |
| Wk 3 | BAL at DAL | 34–31 | BAL 59% | BAL −2.7 | Hit |
| Wk 3 | LV at NO | 35–27 | NO 58% | NO −2.4 | Miss |
| Wk 3 | MIN at TB | 23–16 | MIN 65% | MIN −4.3 | Hit |
| Wk 3 | ARI at SF | 30–36 | SF 65% | SF −4.3 | Hit |
| Wk 3 | NE at JAX | 6–35 | JAX 58% | JAX −2.2 | Hit |
| Wk 3 | CAR at CLE | 18–21 | CLE 54% | CLE −1.0 | Hit |
| Wk 3 | CIN at PIT | 27–30 | CIN 55% | CIN −1.3 | Miss |
| Wk 3 | KC at MIA | 24–10 | KC 65% | KC −4.2 | Hit |
| Wk 3 | SEA at WSH | 31–33 | SEA 85% | SEA −12.1 | Miss |
| Wk 3 | LAC at BUF | 16–24 | BUF 79% | BUF −9.1 | Hit |
| Wk 3 | NYJ at DET | 24–31 | DET 65% | DET −4.2 | Hit |
| Wk 3 | TEN at NYG | 7–12 | NYG 60% | NYG −2.9 | Hit |
| Wk 3 | HOU at IND | 17–19 | HOU 55% | HOU −1.3 | Miss |
| Wk 3 | ATL at GB | 35–14 | GB 62% | GB −3.4 | Miss |
| Wk 2 | NYG at LAR | 6–28 | LAR 51% | LAR −0.2 | Hit |
| Wk 2 | IND at KC | 30–33 | KC 69% | KC −5.5 | Hit |
| Wk 2 | SEA at ARI | 31–7 | SEA 55% | SEA −1.3 | Hit |
| Wk 2 | WSH at DAL | 20–37 | DAL 66% | DAL −4.6 | Hit |
| Wk 2 | MIA at SF | 13–35 | SF 76% | SF −8.1 | Hit |
| Wk 2 | JAX at DEN | 13–20 | JAX 61% | JAX −3.2 | Miss |
| Wk 2 | LV at LAC | 26–14 | LAC 55% | LAC −1.3 | Miss |
| Wk 2 | PHI at TEN | 24–20 | PHI 63% | PHI −3.8 | Hit |
| Wk 2 | NO at BAL | 24–17 | BAL 53% | BAL −0.9 | Miss |
| Wk 2 | CIN at HOU | 20–6 | HOU 52% | HOU −0.5 | Miss |
| Wk 2 | CLE at TB | 23–19 | TB 52% | TB −0.5 | Miss |
| Wk 2 | PIT at NE | 3–20 | NE 58% | NE −2.2 | Hit |
| Wk 2 | GB at NYJ | 20–17 | NYJ 55% | NYJ −1.5 | Miss |
| Wk 2 | MIN at CHI | 9–3 | CHI 67% | CHI −4.8 | Miss |
| Wk 2 | CAR at ATL | 34–3 | CAR 55% | CAR −1.4 | Hit |
| Wk 2 | DET at BUF | 31–41 | BUF 66% | BUF −4.5 | Hit |
| Wk 1 | DEN at KC | 10–31 | DEN 66% | DEN −4.5 | Miss |
| Wk 1 | DAL at NYG | 20–28 | NYG 60% | NYG −2.8 | Hit |
| Wk 1 | WSH at PHI | 22–24 | PHI 58% | PHI −2.3 | Hit |
| Wk 1 | GB at MIN | 22–39 | MIN 65% | MIN −4.3 | Hit |
| Wk 1 | ARI at LAC | 26–14 | LAC 69% | LAC −5.6 | Miss |
| Wk 1 | MIA at LV | 13–27 | MIA 55% | MIA −1.4 | Miss |
| Wk 1 | BAL at IND | 41–23 | BAL 56% | BAL −1.6 | Hit |
| Wk 1 | NO at DET | 30–31 | DET 53% | DET −0.8 | Hit |
| Wk 1 | CHI at CAR | 59–37 | CHI 54% | CHI −1.2 | Hit |
| Wk 1 | BUF at HOU | 36–31 | HOU 57% | HOU −1.8 | Miss |
| Wk 1 | NYJ at TEN | 23–10 | TEN 58% | TEN −2.3 | Miss |
| Wk 1 | TB at CIN | 27–33 | CIN 59% | CIN −2.5 | Hit |
| Wk 1 | CLE at JAX | 10–34 | JAX 72% | JAX −6.5 | Hit |
| Wk 1 | ATL at PIT | 13–20 | PIT 54% | PIT −1.2 | Hit |
| Wk 1 | SF at LAR | 27–7 | SF 51% | SF −0.1 | Hit |
| Wk 1 | NE at SEA | 10–13 | SEA 59% | SEA −2.5 | Hit |
Worst calls of 2025
The games the model was most sure about and still got wrong.
| Week | Game | Final | Model pick | Result |
|---|---|---|---|---|
| Wk 5 | TEN at ARI | 22–21 | ARI 79% | Miss |
| Wk 13 | CIN at BAL | 32–14 | BAL 78% | Miss |
| Wk 18 | WSH at PHI | 24–17 | PHI 76% | Miss |
| Wk 13 | LAR at CAR | 28–31 | LAR 76% | Miss |
| Wk 10 | BUF at MIA | 13–30 | BUF 74% | Miss |
Sharpest calls of 2025
Right winner, and the model spread landed nearly on the final margin.
| Week | Game | Final | Model pick | Result |
|---|---|---|---|---|
| Wk 1 | BAL at BUF | 40–41 | BUF 54% | Hit |
| Wk 3 | ARI at SF | 15–16 | SF 53% | Hit |
| Wk 6 | LAC at MIA | 29–27 | LAC 57% | Hit |
| Wk 16 | LAR at SEA | 37–38 | SEA 54% | Hit |
| Wk 9 | LAC at TEN | 27–20 | LAC 74% | Hit |
Week by week, 2025
Loading diagnostics…
Honest caveat: the 2025 backtest is in-sample in one sense — ratings were built from the same season — but each prediction only uses ratings as they stood before that kickoff, so no game informs its own forecast. Early-season weeks are the weakest, because every team starts the year near the league average.
