Stat Explainer

The Offseason Haircut: What Each Team Gave Back Before Week 1

The frozen 2026 board is last season's ratings with a third of every deviation deleted, and that deletion is the largest change the model made all offseason — it signed nobody and watched nothing. Seattle handed back 84.8 rating points, the biggest move on the board, worth 1.21 expected wins; Tennessee, Las Vegas and the Jets were given 77.7, 77.0 and 71.7 for free. Seventeen teams paid, fifteen were paid, and the board's spread fell from 487 points to 325. One week-1 pick flips on it, three openers get louder rather than quieter, and 829 team-season pairs say the file itself keeps .634 of a January rating against the engine's .667 — with the worst teams, notably, bouncing back harder than a flat third expects.

By C. B. Zakarian · Published September 7, 2026

Every Team Was Rated Twice This Year

The board this site plays 2026 with was frozen on August 12, and it is not the board the model finished last season holding. Between the two sits one line of code: every rating moves a third of the way back to 1505 before a new season starts. Nobody signed anybody. The engine cannot see a draft, a trade, or a torn hamstring — by design it reads final scores and nothing else — so the single largest change to the 2026 numbers is a change the model made to itself.

It is worth knowing how large. Seattle finished the season the model rates at 1759.4, the ninth-highest end-of-season rating in the 861 the file holds since 1999. It opens 2026 at 1674.6. That is 84.8 points handed back for nothing, the biggest single move on the board, and it is worth 1.21 expected wins across the 2026 schedule. At the other end, Tennessee finished at 1272.1 — the 14th-lowest of those 861 — and opens at 1349.8, 77.7 points richer and 1.16 expected wins better off without playing a down. Seventeen teams gave points back, fifteen received them, and the average team moved 35.3 points.

So this page does two things. It prints the movement team by team, in rating points and in expected wins, and it re-prices the sixteen openers both ways to see what the haircut actually changed. Then it asks the question the movement invites: is a third the right amount? Across 829 team-season pairs the file says teams keep .634 of their January deviation into the following January, against the .667 the engine assumes — close enough that the difference is 1.2 standard errors of nothing. With one exception, and the exception is not the one people expect.

What a Uniform Shrink Can and Cannot Do

The operation is new = old × 2/3 + 1505 × 1/3, applied to all 32 ratings at once. Three consequences follow from the arithmetic alone, and they matter for reading the table below.

It cannot re-rank anyone. The order of the 32 in January and the order on the frozen board are identical, top to bottom. Any 2026 ranking surprise — Kansas City seventeenth, Tennessee last — was already true in February; the regression only made it quieter. It is zero-sum. Both boards average exactly 1505, so the points Seattle gave back are the points Tennessee, Las Vegas and the Jets received. And it is proportional to distance: Kansas City finished at 1509.8, four and a half points from average, and moved 1.6. Pittsburgh moved 5.5, Tampa Bay 8.3. The middle of the board is untouched because there is nothing to take.

What the shrink does change is spread. The board's span fell from 487.2 rating points between best and worst to 324.8; its standard deviation fell from 124.8 to 83.2. Priced across the actual 2026 schedule, the expected-win gap between the best and worst team fell from 9.68 wins to 7.30 — the 7.3 that the win-totals page reports, arrived at from the other side. Two cross-checks anchor everything here: the rolled January ratings reproduce all 32 frozen values to the published tenth, and pricing the 272-game schedule with them reproduces the win-totals page exactly (Seattle 12.17, Houston 11.06, Las Vegas 4.87).

The Exhibit

Left panel: a dumbbell chart of all 32 teams showing each team's end-of-2025 Elo rating as a blue dot and its frozen 2026 rating as a red dot, sorted from Seattle at 1759.4 down to Tennessee at 1272.1; teams above 1505 move left toward the mean and teams below move right, with Seattle's 84.8-point drop and Tennessee's 77.7-point gain the largest. Right panel: a scatter of eight octile means of January rating deviation against the following January's deviation, with error bars, compared with a dashed no-regression line, the engine's keep-two-thirds line, and the fitted keep-0.634 line; the worst octile sits above both fitted lines.
Left: January against August for all 32 teams, the whole of the offseason as the model sees it. Right: what the following January actually kept, 829 team-season pairs. Data: nflverse, plus this site's frozen ledger.

All Thirty-Two, January to August

TeamJanuaryFrozenMoveExp. wins, JanuaryExp. wins, frozenChange
SEA1759.41674.6−84.813.3812.17−1.21
BUF1671.41615.9−55.511.4510.63−0.83
LA1669.61614.7−54.911.4110.62−0.79
DEN1666.51612.6−53.911.7610.86−0.90
HOU1655.91605.6−50.312.0611.06−1.00
NE1636.71592.8−43.910.7210.12−0.61
PHI1619.41581.2−38.211.3710.57−0.80
JAX1596.41565.9−30.510.499.88−0.61
DET1593.31563.9−29.410.9410.24−0.70
SF1586.61559.4−27.29.899.52−0.37
MIN1581.71556.1−25.610.309.80−0.50
BAL1577.61553.4−24.210.7310.06−0.67
GB1551.31535.9−15.49.108.95−0.15
LAC1543.91530.9−13.08.638.61−0.02
CHI1540.51528.7−11.88.558.57+0.01
PIT1521.51516.0−5.59.028.87−0.15
KC1509.81508.2−1.68.338.37+0.04
TB1480.11488.4+8.38.328.40+0.08
CIN1468.11480.4+12.38.408.43+0.03
ATL1452.91470.3+17.47.717.96+0.25
IND1451.61469.4+17.87.587.86+0.28
DAL1438.51460.7+22.26.867.33+0.47
MIA1436.21459.1+22.96.477.05+0.58
WAS1434.81458.2+23.46.857.32+0.47
NO1400.51435.3+34.87.137.56+0.42
CAR1386.91426.3+39.45.566.44+0.89
CLE1377.41419.9+42.56.697.21+0.52
NYG1376.41419.3+42.95.896.62+0.73
ARI1339.11394.4+55.34.605.64+1.04
NYJ1289.81361.5+71.74.065.19+1.13
LV1274.01351.0+77.03.704.87+1.17
TEN1272.11349.8+77.74.075.23+1.16

January = the rating after the last played game of the 2025 season. Frozen = the ledger's opening 2026 rating. Expected wins price the team's actual 17-game 2026 schedule with each board (48-point home edge, waived at the three neutral sites); both columns sum to 272.

The expected-win column is where the haircut stops being an abstraction. It bought Las Vegas 1.17 wins, Tennessee 1.16, the Jets 1.13 and Arizona 1.04, and it charged Seattle 1.21, Houston 1.00, Denver 0.90 and Buffalo 0.83. Every team rated above 1550 in January is worse off on the frozen board and every team below 1450 is better off; in the 1450-to-1550 band the sign depends on the schedule as much as the rating, because who a team plays decides whether a softened league helps or hurts. The Chargers moved 13 rating points and lost 0.02 expected wins; Chicago moved 11.8 and gained 0.01. In the middle of the board the whole operation is invisible.

The Sixteen Openers, Priced Both Ways

Run the week-1 board through the January ratings and the sixteen picks come back almost unchanged. Exactly one flips: Dallas at the Giants, which the January board calls Dallas at 52.0% and the frozen board calls the Giants at 51.0%. The mechanism is visible in one line — Dallas was 62.0 rating points better in January and is 41.4 better now, and the home edge is a flat 48 either way. The haircut walked the Cowboys' edge past the field-advantage line. It is also worth what it looks like: 1.1 points of conviction, on the closest game of the week.

Everything else moves in magnitude only, and mostly downward. Mean stated confidence across the sixteen falls from .6609 to .6196, which is 10.57 expected correct against 9.91 — the published grading frame is two thirds of a game quieter than it would have been in February. Jacksonville over Cleveland would have been a .823 pick and is .753. Seattle over New England would have been .728 and is .679, the rating gap having fallen from 122.7 to 81.8. The two loudest disagreements with the market both shrank: Miami at Las Vegas from .659 to .586, Denver at Kansas City from .652 to .581.

Three games went the other way, and they are the interesting ones. Buffalo at Houston got louder (.5467 to .5540), as did the Jets at Tennessee (.5435 to .5519) and Tampa Bay at Cincinnati (.5517 to .5573). These are exactly the three games where the visitor is rated higher but the host is favored anyway, and the reason is structural: the home edge is a constant, the rating gap it has to overcome is not. Shrink the gap and the fixed 48 does proportionally more work. In other words, regression does not simply mute the board — it mutes the teams and leaves home field alone, so games decided by home field get more confident, not less.

Is a Third the Right Number?

The engine's constant is an assumption, and the file it runs on can grade it. Take every team's end-of-season rating and the same team's rating the following January — 829 pairs from 1999 through 2025 — and regress one deviation on the other. The fitted line keeps .634 of a January deviation (SE .027, correlation .629), with an intercept indistinguishable from zero. The engine keeps .667. The difference is 1.2 standard errors: on this evidence, one third is right, or at any rate not wrong in a way 829 team-seasons can detect.

The averages hide two asymmetries. Split the sample at 1505 and above-average teams kept .692 of their deviation (SE .066) while below-average teams kept .583 (SE .067) — good teams are stickier than bad ones, though at z = 1.16 that is a suggestion, not a finding. Sorted into octiles, seven of the eight sit within two standard errors of the engine's line and one does not: the worst octile, teams averaging 189.0 points below the mean in January, came back to −107.7 the following January when the engine would have priced them at −126.0. That is z = +2.07, and it points the same way as the split above. The very bad teams in this file recovered faster than a flat one-third rule expects, which is the one place a 2026 reader should discount the board: Tennessee, Las Vegas and the Jets may be underrated even after being handed 70-plus points each.

Year to year the fraction is unstable enough to warn against precision. Fitting each offseason separately, survival ranges from .479 into 2001 to .882 into 2009, median .627, with 18 of 26 seasons below the engine's two thirds. Into 2025 it was .548. A single offseason is 32 noisy points; the constant is a long-run compromise and behaves like one.

The comparables make the same point in plain language. Sixteen team-seasons in the file finished January rated between 1730 and 1800, as Seattle nearly did. Their next January averaged 1689.0, above the 1671.4 the engine's regression assigned them; they won at a .698 clip and 13 of 16 made the playoffs. Only one was rated higher a year later (New England after 2003), and the worst case is a warning: the 2001 Rams fell from 1740.7 to 1546.9 and went 7–9. The 26 teams that finished between 1250 and 1300, the Tennessee band, came back to 1363.7 against the engine's 1352.9, won at .362, and sent five of 26 to the playoffs — with the 2008 Dolphins (1298.3 to 1501.5, 11–5) at one extreme and Cleveland's 0–16 at the other.

Two Ways to Score the Fraction

A slope is one test. The better test is predictive, and there are two honest versions of it. The first freezes a January board, shrinks it by some fraction, and uses it to predict every regular-season game of the following year — 6,704 decided games from 2000 to 2025, no updating at all, which is the closest thing to what the 2026 board is being asked to do in September:

Regression toward 1505Static: accuracyStatic: BrierWalk-forward: accuracyWalk-forward: Brier
none.5984.2423.6361.2295
one sixth.5995.2381.6411.2232
one quarter.6013.2365.6451.2215
one third (this model).6035.2352.6469.2205
one half.6041.2340.6451.2199
two thirds.5989.2351.6384.2207
everything (all teams 1505).5604.2458.6239.2256

Static: a January board, shrunk once, predicting all 6,704 decided regular-season games of the following season, 2000–2025. Walk-forward: the full engine re-run with that constant, graded on the published window (4,350 decided games, 2010–2025). Lower Brier is better; .25 is a coin flip.

Both columns say the same thing twice. Some regression is worth a lot: going from none to a third buys .0071 of Brier and half a point of accuracy in the static test — 34 more correct picks out of 6,704 — and .0090 of Brier walking forward. Beyond that the curve is nearly flat and the optimum is soft. The static test likes one half best by both scores; the walk-forward run gives its best accuracy to one third (.6469, the site's published number) and its best Brier to one half, by .0006. Anywhere between a quarter and a half is defensible, and the site's constant sits inside that band. Full regression — throwing away last season entirely and picking the home team — is meaningfully worse, which is the only strong conclusion available here.

Worked Example: Where Seattle's 84.8 Points Went

Seattle ended the season at 1759.4, which is 254.4 points above the 1505 baseline. A third of 254.4 is 84.8, so the frozen rating is 1759.4 − 84.8 = 1674.6, the number on the ledger. Now the opener, Wednesday against New England. The Patriots ended at 1636.7 and open at 1592.8, so the gap Seattle carries into its own stadium fell from 122.7 to 81.8. Add the 48-point home edge and run the logistic: 1 / (1 + 10−170.7/400) = .7276 on January ratings, 1 / (1 + 10−129.8/400) = .6785 on the frozen board. Same two teams, same field, 4.9 points of confidence removed by a constant.

Across the full schedule the same shrink costs Seattle 1.21 expected wins, from 13.38 down to 12.17. To get its 84.8 points back on the field, at K = 20 and a typical margin multiplier, the Seahawks need a season of beating the model's expectations — which, if they are the team January thought they were, is exactly what they will do, and the ratings will say so by November. That is the trade the regression makes: it is deliberately wrong about the best team in order to be less wrong about the other 31.

What This Page Cannot Tell You

  • This is not an offseason review. The move column measures one line of arithmetic, not roster churn. A team that rebuilt its line and a team that lost nobody get the identical treatment; the engine is blind to both, and any team whose true strength changed since February is mispriced here in a way this page cannot detect.
  • The 829 pairs mix eras and formats. They span 16-game and 17-game seasons, two playoff structures, and 2020. The survival slope is an average over all of it, and its per-season range (.479 to .882) is wider than the gap between any two of the constants tested above.
  • The static test is not the model. It freezes a board for a whole season, which no version of this engine ever does. It is included because it isolates the regression choice from in-season updating; the walk-forward column is the honest one for grading the live model.
  • A flat fraction is itself an assumption. The worst-octile result (z = +2.07) and the above-versus-below split hint that the right rule is asymmetric, or that it should depend on how a rating was earned. Testing that properly needs more than eight octiles of 104 seasons, and this page does not claim to have done it.
  • Expected wins are not a forecast. The two expected-win columns price the same schedule with two boards; neither predicts anyone's record. The binomial noise on a 17-game season is roughly two wins, larger than every number in the change column.
  • The three "louder" openers are a rounding-scale effect. Their gains are 0.6 to 0.8 points of probability. They are reported because the mechanism is real and instructive, not because anything hinges on them.

Reproduce It

Two published files: games.csv from nflverse nfldata, bundled at /data/games.csv, and the frozen ledger at /data/predictions.json. The harness is explainer_src/make_offseason_haircut_chart.py, which imports the live engine rather than copying it, and its January-to-August half is short enough to print:

import json, nfl_elo as E

rows, eng, jan, last = E.load_games(), E.Engine(), {}, None
for r in rows:                       # walk forward through every played game
    if not E.played(r):
        continue
    s = int(r["season"])
    if last is not None and s != last:
        jan[last] = dict(eng.r)      # the ratings as the season ended
    eng.predict(r)                   # rolls the season (regression) before feeding
    eng.feed(r)
    last = s
jan[last] = dict(eng.r)

frozen = json.load(open("static/data/predictions.json"))["ratings"]
for t in sorted(jan[2025], key=jan[2025].get, reverse=True):
    print(t, round(jan[2025][t], 1), frozen[t], round(frozen[t] - round(jan[2025][t], 1), 1))
# SEA 1759.4 1674.6 -84.8 ... KC 1509.8 1508.2 -1.6 ... TEN 1272.1 1349.8 +77.7

The script asserts every figure on this page — the replay against the published backtest, all 32 January ratings and moves, the expected-win pricing against the win-totals page, the sixteen openers priced both ways including the single flip and the three that got louder, the 829-pair regression with its standard errors and splits, the eight octiles, the per-season range, the three comparable bands, and both scoring tables at seven regression fractions: 151 assertions, all green as of September 7, 2026.

Sources: the nflverse public game log (1999–2025 results plus the 2026 schedule), bundled and served at /data/games.csv; ratings, pricing and the regression constant from explainer_src/nfl_elo.py, the module that writes the live ledger. The statistical idea being applied — that a set of noisy estimates does better when each is pulled toward the group mean — is the shrinkage result popularised for general readers by Bradley Efron and Carl Morris, "Stein's Paradox in Statistics" (Scientific American, 1977); the one-third here is this site's own constant, graded above rather than borrowed.

Further reading

About the author

C. B. Zakarian

C. B. Zakarian is an independent analyst who writes about what he can measure. He builds every model, chart, and calculator on this site himself from the public nflverse play-by-play and game-log releases, shows the working, and never invents a number. The dataset behind the exhibits is served openly at /data/, and the method behind every figure is spelled out so you can check it against the same file. When the data can't answer a question, he says so.

More Explainers
Do Favorites Cover? Scoring by Week Most Common Scores Favorite Win Rates Playoff Football Division Games & Home Field DVOA EPA vs. DVOA CPOE Passer Rating vs. QBR Pythagorean Wins Air Yards & YAC Fourth-Down Analytics Strength of Schedule ANY/A RYOE Pass Protection Coverage Metrics Special Teams PROE & Game Script Red Zone Efficiency Explosive Plays Third Down Time of Possession Turnovers & Luck Win Probability YAC Over Expected Snaps & Usage Points Per Drive Success Rate Pressure Rate Play-Action Yards After Contact RPO Two-Point Conversions Yards per Route Run Block Win Rates Target Share & WOPR Home-Field Advantage Expected Points Point Spread Accuracy Weather & Scoring Rest & Scheduling Scoring Trend Overtime Over/Under Accuracy Key Numbers (3 & 7) Thursday & Primetime Grass vs. Turf One-Score Games Stadium Scoring Referee Effects QB Continuity Week 1 Signal Shutouts 2026 Schedule Strength 2026 Schedule Quirks Best Record vs. Super Bowl Win & Loss Streaks Division Repeats Close-Game Luck The Prediction Model The Week 1 Slate AFC East 2026 AFC North 2026 AFC South 2026 AFC West 2026 NFC East 2026 NFC North 2026 NFC South 2026 NFC West 2026 Preseason Signal 2026 Preseason 2026 Win Totals 2026 Playoff Odds 2026 International Games 2026 Miss Budget AFC vs NFC The 17-Game Era The Coach Ledger Week 1 Predictions Opening Night 2026 SB Rematch Effect Road Favorites The Chiefs' Rating Division Leverage The Learning Curve The Board, Sorted September, Priced The Offseason Haircut Fair Prices All explainers

Go deeper

Want the code behind these metrics? Work through the 45-chapter NFL analytics tutorial.

Browse tutorials Free tools