OddsRecord

The model, without the sales pitch

How the NFL probabilities are made

Past final scores become team-strength estimates, those estimates become a margin distribution, and historical out-of-sample forecasts calibrate the probability.

1. Only finished games enter the model

Games are processed in time order. A result becomes available four hours after kickoff, a deliberately conservative estimate of when it has finished. For every historical prediction, the audit checks that no later result—and not the game being predicted—entered training.

2. Team strength has two parts

Elo carries most of the NFL weight. It moves after each completed game, gives the home team a site adjustment, dampens the effect of blowouts, and pulls teams one-third of the way back toward average between seasons. A smaller opponent-adjusted scoring model uses up to two seasons of results. Its influence is reduced when either team has fewer than eight games.

3. Strength becomes a win probability

The two ratings produce an expected scoring margin. The model uses a bell-shaped margin curve whose spread is measured from historical misses; the current run measured 13.57 points. A fitted Platt calibration then adjusts raw probabilities using out-of-sample historical predictions.

4. The test walks forward

The reported test contains 7,276 NFL games from September 1999 through February 2026. At each game, the model uses only results that would have been known then. It is compared with a running home-win base rate, a flat 50%, and always choosing the home team.

Measured result: 10.1% Brier skill against the running base rate and 1.1% expected calibration error. Both numbers belong to the historical walk-forward test, not the still-unscored Week 1 record.

What the model does badly

It cannot see news it does not ingest.

This NFL path does not use injury reports, depth charts, weather or betting-market movement. A late quarterback change can make a carefully calculated number stale at once.

Early-season certainty is weak.

Only 17 regular-season games are played per team. Rosters and coaches can change faster than a rating catches up, and offseason regression intentionally pulls teams toward average.

Football scores are lumpy.

The smooth margin curve does not reproduce the extra weight around margins of 3 and 7. The model code warns that this can misprice a point spread at a key number by a point or two of probability. This site publishes game-win probabilities, not spread prices.

Calibration can drift.

A 1.1% historical calibration error is not a permanent property. Rule changes, scheduling, team behavior and the mix of games can change. The live record is kept separate so drift has somewhere to show.

What is locked

Each public forecast is written before kickoff and cannot be updated or deleted. Corrections append beside the original. Every row includes the previous row’s hash, so altering an old value breaks the chain from that point onward.