How the numbers and the estimates are made
What the model does, how it was tested on games it had never seen, how it has done this season, where it does not beat a simpler method, and how every measure on the site is computed.
What an estimate is
For each game of the coming week the site shows the chance each team has to win and the points each is expected to score. For players with enough games behind them it shows what to expect from the next game. These numbers come from a statistical model, and they are marked everywhere with the same sign: a point between two end stops.
An estimate is never a single number. A team given 70% loses three games in ten. A quarterback expected to throw for 240 yards has a range around that figure, and the range is wide because football is a game of few plays and many bounces. The range shown is where the model puts 80 cases out of 100.
No model is free of bias. What can be done is to keep it from seeing the future, test it on seasons it was not built on, publish the results next to simpler methods, and say where it loses. That is what the rest of this page does.
How the game model works
- 1. Rate every team
- After each week, every team gets a rating in points from its results, adjusted for the opponents it played, with recent games counting more. A second set of ratings does the same with efficiency per play. weighted ridge on points; half-life 16 weeks, off-season counted as 16 weeks, penalty 4, window 3 seasons.
- 2. Add what is known before kickoff
- Home field, days of rest, a division game or not, and the quarterback: the model assumes the passer who took most of the snaps in the last game starts the next one, and rates him on his earlier games. Nothing from the game itself, and nothing published after it.
- 3. Turn that into a margin
- Linear model on efficiency features: ridge regression of the margin on 12 pre-game features, penalty 300, refitted every week on all earlier games from 2002.
- 4. Turn the margin into a chance
- The expected margin becomes a win probability through a curve fitted on earlier seasons only, so that games given 70% are won about 70% of the time.
- 5. Give the points a range
- Expected points for each team come from the expected margin and the expected total. The range is the middle 80% of how far the model has missed in the past.
How it was tested
The test covers the 1,420 regular-season games of 2021 to 2025. For each week the model was fitted only on games played before that week, then asked about the week. Its settings were chosen on the seasons 2010 to 2020 and not touched afterwards. Three scores are reported. Accuracy is how often the team given more than 50% won. The Brier score and the log loss also punish being confident and wrong; for both, lower is better, and a coin flip scores 0.25 and 0.693.
| Method | Accuracy | Brier score | Log loss |
|---|---|---|---|
| Always the home team | 54.4% | 0.2482 | 0.6895 |
| Home field plus rest and division | 54.6% | 0.2488 | 0.6908 |
| Elo ratings | 63.1% | 0.2238 | 0.6386 |
| Points ratings, opponent-adjusted | 63.5% | 0.2250 | 0.6415 |
| Linear model on efficiency features (the one in use) | 63.3% | 0.2228 | 0.6359 |
| Gradient boosting on efficiency features | 63.3% | 0.2226 | 0.6353 |
| Blend of the candidates | 63.2% | 0.2230 | 0.6367 |
Against Elo ratings, the simplest serious rival, the model's log loss is lower by 0.0027. That gap is small: when the games are resampled, it runs from 0.0082 better to 0.0031 worse, so on this evidence the model is at least as good as Elo and probably a little better, not clearly better. The more complex candidates were tried and reported above; the one in use is the one that did best on the tuning seasons, not the most elaborate.
On points, the model misses the final margin by 10.2 points on average and the total by 10.5. Its 80% range for a team's points held the real score 81% of the time.
Teams the model gave about 75% won 70% of the time
Each dot groups the games of 2021 to 2025 by the chance the model gave a team; every game counts twice, once for each side. A model that knows what it does not know stays on the grey diagonal. The average gap here is 2.5%. Groups with fewer than 20 games are in the table only.
The same as a table
| Chance given | Team-games | Average chance given | Team won |
|---|---|---|---|
| 0 to 10% | 8 | 8.7% | 0.0% |
| 10 to 20% | 142 | 16.5% | 18.3% |
| 20 to 30% | 290 | 25.3% | 30.3% |
| 30 to 40% | 443 | 35.2% | 34.1% |
| 40 to 50% | 537 | 45.3% | 47.7% |
| 50 to 60% | 537 | 54.7% | 52.3% |
| 60 to 70% | 443 | 64.8% | 65.9% |
| 70 to 80% | 290 | 74.7% | 69.7% |
| 80 to 90% | 142 | 83.5% | 81.7% |
| 90 to 100% | 8 | 91.3% | 100.0% |
This season so far
The team the model gave the better chance has won 88 of 135 games this season (65%)
One square per game, by week. A filled square is a game won by the team the model gave more than 50%. On the same games, Elo ratings alone get 64% and always taking the home team gets 51%. Every week so far was replayed after the fact: the model was refitted using only games played before that week, then asked about it. From now on each estimate is frozen at kickoff and never changed afterwards.
Won by the team given the better chanceLost by it, or tied
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Week by week as a table
| Week | How | Games | Right side of 50% | Brier score | Log loss | Average miss on the margin, points |
|---|---|---|---|---|---|---|
| Week 1 | Replayed | 16 | 9 | 0.222 | 0.633 | 12.2 |
| Week 2 | Replayed | 16 | 10 | 0.230 | 0.651 | 11.8 |
| Week 3 | Replayed | 16 | 10 | 0.223 | 0.637 | 8.3 |
| Week 4 | Replayed | 16 | 11 | 0.202 | 0.584 | 7.1 |
| Week 5 | Replayed | 14 | 9 | 0.212 | 0.614 | 9.7 |
| Week 6 | Replayed | 14 | 5 | 0.283 | 0.764 | 8.0 |
| Week 7 | Replayed | 14 | 9 | 0.232 | 0.656 | 10.6 |
| Week 8 | Replayed | 14 | 11 | 0.180 | 0.540 | 10.8 |
| Week 9 | Replayed | 15 | 14 | 0.140 | 0.457 | 8.6 |
The same scores on this season
| Method | Accuracy | Brier score | Log loss |
|---|---|---|---|
| Always the home team | 51.5% | 0.2506 | 0.6944 |
| Home field plus rest and division | 52.2% | 0.2470 | 0.6870 |
| Elo ratings | 63.7% | 0.2212 | 0.6308 |
| Points ratings, opponent-adjusted | 60.0% | 0.2231 | 0.6363 |
| Linear model on efficiency features (the one in use) | 65.2% | 0.2134 | 0.6146 |
| Gradient boosting on efficiency features | 64.4% | 0.2146 | 0.6175 |
| Blend of the candidates | 63.7% | 0.2158 | 0.6198 |
The rest of the season
The remaining schedule is played 20,000 times. Next week's games use the game model's own probabilities. Each week further ahead moves a probability towards 50%, because form, injuries and line-ups change. In every run each team's strength is first shifted by a random error of about 4 points, kept for the whole run, since a rating after a few games is itself uncertain. The chance of the playoffs is the share of runs in which a team finished among its conference's four division winners and three wild cards. The range of final wins runs from the 10th to the 90th percentile of the runs.
Ties in the standings are broken in this order. For a division: head-to-head among the tied teams, division record, conference record, random draw. For seeds and wild cards: head-to-head when exactly two teams are tied and they met, conference record, random draw.
- These are not the official tiebreakers: common games, strength of victory, strength of schedule and points are replaced by a random draw.
- With three or more teams tied for a seed or a wild card, head-to-head is skipped.
- Simulated games cannot end in a tie.
- Later weeks use today's ratings and today's expected quarterbacks; injuries, trades and form to come are covered only by the rating error and the weekly drift.
The test replays the seasons 2021 to 2025 from three points, after weeks 4, 8, 12, using only the results known at that point: 480 checkpoints in all, one for each club at each point. Lower is better in both columns. The Brier score compares the playoff chance with what happened; the second column is the average miss on final wins.
| Method | Playoff chance, Brier score | Final wins, average miss |
|---|---|---|
| The model's simulation | 0.1438 | 1.51 |
| Same simulation with Elo ratings | 0.1458 | 1.54 |
| Same simulation, every game a coin flip | 0.1456 | 1.77 |
| The standings as they stood | 0.2271 | |
| Wins so far, continued at the same pace | 1.94 |
On the playoff chance the model's simulation scored 0.1438 against 0.1456 for the coin-flip version, and was the better of the two in 4 of 5 seasons. That is a small margin: with a sample this small it is not clear evidence that the ratings add much to the standings a team already has. On final wins the gain is larger: the model missed by 1.51 wins on average, the coin-flip version by 1.77. Because wins are whole numbers, the range holds 89% of simulated seasons on average, not 80%; the real win total fell inside it 86% of the time. In the table below, chances above 70% came true a little less often than stated.
When the simulation said this, how often the team made the playoffs
| Chance given | Team-seasons | Average chance given | Made the playoffs |
|---|---|---|---|
| 0 to 10% | 117 | 3% | 3% |
| 10 to 30% | 92 | 20% | 24% |
| 30 to 70% | 135 | 50% | 53% |
| 70 to 90% | 70 | 81% | 74% |
| 90 to 100% | 66 | 96% | 92% |
Player projections
Players at quarterback, running back, wide receiver and tight end with at least 4 games this season, or 6 across this season and the last, and a regular role in recent games. Quarterbacks: only the one who took most of the snaps in the team's last game. Players listed as out or on a reserve list are left out.
Each projection is a low, a middle and a high figure: the model expects the player to land between the low and the high 80 times in 100. The test below uses the same seasons and the same rule as the game model: projections for a season come from a model fitted on earlier seasons only. The fair rival is a naive one, the player's own average so far this season, and his average over the last three games.
| Statistic | Position | Player games | Average miss, model | Average miss, season average | Average miss, last three | Inside the 80% range | Shown on the site | Beats the season average |
|---|---|---|---|---|---|---|---|---|
| Passing yards | QB | 2,360 | 58.15 | 64.67 | 67.50 | 82% | Model | Yes |
| Touchdown passes | QB | 2,360 | 0.90 | 0.96 | 0.99 | 94% | Model | Yes |
| Interceptions thrown | QB | 2,360 | 0.70 | 0.74 | 0.76 | 96% | Model | Yes |
| Rushing yards | QB | 2,360 | 11.93 | 12.58 | 13.23 | 82% | Model | Yes |
| Rushing yards | RB | 5,204 | 23.08 | 24.60 | 25.65 | 83% | Model | Yes |
| Carries | RB | 5,204 | 4.02 | 4.28 | 4.37 | 85% | Model | Yes |
| Receptions | RB | 5,204 | 1.25 | 1.36 | 1.41 | 92% | Model | Yes |
| Receiving yards | RB | 5,204 | 11.73 | 12.99 | 13.68 | 88% | Model | Yes |
| Rushing or receiving touchdowns | RB | 5,204 | 0.49 | 0.49 | 0.51 | 96% | Model | Yes |
| Targets | WR | 8,284 | 2.18 | 2.33 | 2.42 | 87% | Model | Yes |
| Receptions | WR | 8,284 | 1.63 | 1.74 | 1.80 | 90% | Model | Yes |
| Receiving yards | WR | 8,284 | 24.81 | 26.79 | 27.96 | 84% | Model | Yes |
| Rushing or receiving touchdowns | WR | 8,284 | 0.40 | 0.40 | 0.40 | 97% | Model | No |
| Targets | TE | 3,769 | 1.81 | 1.91 | 2.00 | 89% | Model | Yes |
| Receptions | TE | 3,769 | 1.47 | 1.56 | 1.66 | 90% | Model | Yes |
| Receiving yards | TE | 3,769 | 18.59 | 19.73 | 21.15 | 87% | Model | Yes |
| Rushing or receiving touchdowns | TE | 3,769 | 0.35 | 0.33 | 0.34 | 97% | Model | No |
On the average miss, the model does not beat the season average for rushing or receiving touchdowns for wide receivers and rushing or receiving touchdowns for tight ends. It is still the one shown, because it is ahead on the measure that punishes large misses. For counts that are usually zero or one, such as touchdowns and interceptions, the range is wide next to the middle figure, and it holds the real number more often than 80% because a count cannot fall below zero.
What the model does not know
- Injuries and line-up news. It assumes the quarterback of the last game starts the next one, so a change announced during the week is not in the estimate. It knows nothing about the other 21 starters. The depth charts on this site show what it is missing.
- Weather, travel, coaching changes and anything said during the week.
- Late changes. Estimates are refreshed when the site updates and frozen at kickoff; a scratch an hour before the game is not in them.
- Luck. In the test seasons about 37 games in 100 went to the team given the smaller chance.
The estimates describe chances. They are not advice of any kind.
How each measure is computed
Every number on the site is either copied from a source file or computed from one in the way written here.
- Snap share
- The percentage of the offense's, the defense's or the special teams' snaps a player was on the field for in a game. "Last three" is the plain average of his last three team games, counting a game he missed as zero.Source: nflverse snap counts (from Pro Football Reference)
- Regular
- A player who had averaged at least half of the offense's or the defense's snaps in the games he had already played, with at least two such games. A regular "did not play" when he took no snap on offense or defense. Players who have left the roster are not counted.Source: Derived from snap counts
- Depth chart change
- A day on which the first-listed player at a position changed. The change is attached to the next game played after that day. Special teams are left out.Source: nflverse daily snapshots of ESPN depth charts
- Expected points added (EPA)
- For every play, the points a team could expect from where it stood after the play (down and distance, spot on the field), minus the same before it. Per play: passing plus rushing EPA, divided by pass attempts, sacks and carries. Defense is what opponents did against the team, so lower is better.Source: nflverse team statistics by week
- Net passing yards
- Passing yards minus the yards lost on sacks.Source: nflverse team statistics by week
- Rank and rank by week
- Teams are ordered on the season total or per-game average through that week. Third-down and red-zone rates come from ESPN season totals and have no week-by-week path.Source: nflverse results and team statistics; ESPN team statistics
- Share of targets, carries and air yards
- A player's season total divided by the team's. Air yards are the distance the ball travels past the line of scrimmage on every target, caught or not.Source: nflverse player statistics by week
- Completion rate above expected, time to throw, separation, cushion, rushing yards over expected
- Tracking measures published by the NFL for players above a minimum number of attempts, targets or carries. Shown as the season figure.Source: NFL Next Gen Stats, via nflverse
- Pressures, bad throws, drops, yards around contact, tackles broken or missed, coverage numbers
- Counts charted by hand from the broadcast, summed over the season.Source: Pro Football Reference charting, via nflverse
- Salary and contract end
- The salary listed for this season and the last season under contract.Source: ESPN rosters
- Draft and combine
- Where a player was drafted, plus the drills he ran at the scouting combine.Source: nflverse players, draft picks and combine tables
- Game status
- The designation on the final injury report of a week: out, doubtful, questionable. The current designation on a depth chart comes from ESPN.Source: nflverse injury reports; ESPN injuries
- Seasons since 1999
- Every regular-season and playoff result since 1999. A franchise keeps one history across a move, so the Chargers in San Diego, the Raiders in Oakland and the Rams in St. Louis are counted. Head-to-head records include playoff games.Source: nflverse schedule and results
- Worth knowing
- Sentences produced by a count, each with a fixed threshold: a record after the same number of games not matched for three seasons or more, a run of four or more wins or losses, points scored or allowed among the three highest or lowest since 1999, a run of three or more results against the next opponent. Nothing is written by hand.Source: Derived from the results since 1999
- Career by season
- Regular-season totals of each earlier season. The current season is added from this site and marked as unfinished.Source: nflverse season totals by player
- Combine comparison
- For each drill, the share of players at the same position tested at the combine since 2000 whom the player did better than. Shown only where at least 60 players at that position have a result.Source: nflverse combine table
- How the chart was built
- The draft round of each player on the depth chart, and whether the club that drafted him is the one he plays for. A player with no draft record is counted as never drafted.Source: nflverse player table
- Every drive
- Each possession of the season, from the yard line where it started to the yard line where it ended, with its result. A touchdown drive is drawn to the goal line. Drives that only ran out a half are drawn but left out of the counts and averages. Points per drive counts a touchdown as seven and a field goal as three.Source: nflverse play-by-play
- How each game went
- The chance of winning at the end of each minute of a game. This is the in-game win probability published with the play-by-play: a public model that reads only the score, the time left, the down, the distance and the spot on the field. It is an estimate made by that model, not by this site, and it describes games already played. A swing is the change in that chance on one play, in percentage points.Source: nflverse play-by-play
- Where the ball goes
- Every pass with a charted direction, sorted by how far the ball travelled in the air (behind the line, 0 to 9, 10 to 19, 20 yards or more) and by side of the field; every run with a charted gap. Scrambles, kneel-downs, sacks and throws with no charted target are left out. The league share is the same count over the whole league.Source: nflverse play-by-play
- How they play
- Rates counted from plays and drives: explosive plays are passes of 20 yards or more and runs of 10 or more; a three-and-out is a drive of three plays or fewer that ends in a punt; a red-zone trip is a drive that reached the opponent's 20. Pass rate above expected is the difference between how often a team threw and how often the public play-by-play model expects a throw on the same down, distance, score and time. Style measures are ranked from highest to lowest because neither end is better.Source: nflverse play-by-play
- Where each offense gains ground
- Yards per play in seven parts of the field: four depths of throw and three directions of run. The offense's figure is what it gained, the defense's is what it allowed, the league's is every club together. The sentence above the chart names a part of the field only when both sides have at least 15 plays there.Source: nflverse play-by-play
- Player maps
- The same sorting of throws, targets and carries for one player. Shown for a passer with at least 30 charted throws, a receiver with at least 10 charted targets and a runner with at least 15 charted carries.Source: nflverse play-by-play
- Model rating
- Points by which the model expects a team to beat an average team on a neutral field, from its results and efficiency so far, adjusted for opponents, with recent games counting more.Source: tools/model, from nflverse results and play-by-play
Sources
- ESPN: teams, rosters, contracts, depth charts, schedules, venues and broadcasts, team statistics, standings, injuries, roster moves, photos and logos.
- nflverse, an open football data project: snap counts, player and team statistics by week, play-by-play, schedules and results, weekly injury reports, daily depth-chart snapshots, draft picks and combine results. It also republishes NFL Next Gen Stats and Pro Football Reference charting.
- The model's code, its tests and the command that reproduces every figure on this page are in the site's repository, under tools/model.