Rankings
Tick ◯ to draw a row on the chart (up to 10).Select a column name to rank by it · ↑ ↓ move · Space or C tick · Esc clear · 1–4 chart · T tests
Which stats to trust every stat of this group, tested on past seasons
Scorecard
Stat map one dot per stat · select a dot to see it
stattargetself-forecast50% signal
Weaker gradeStronger gradeself-forecast
Matchups
Every game of the season, playoffs included. Each pick combines team ratings for passing, running and scoring, an Elo rating, the starting quarterback, missing players and rest. No part uses betting lines.
Method
What this site is, how each number is made, and how we checked it. The parts follow the tabs. Technical names are at the end.
About
Downfield is an NFL stats site. It tests football stats, ranks teams and players, and picks every game with its own model.
The model
The model picks each game from football stats alone. It adds up nine parts, such as passing, running, the quarterback and missing players.
Each part is a gap between the two teams, in points. The parts add up to the predicted margin, and the margin gives each team's win chance.
Team strength in Rankings and the season outlook come from the same model.
Every rating uses only games played before the week of the game. The weights were chosen on 2016–2022 and tested once on 2023–2025.
The pick, under Matchups, lists every part and the model's record.
Pure stats, no betting line
No part of the model uses betting lines, betting odds or anyone else's picks. Its inputs are play-by-play, scores, schedules, injury reports, inactive lists and snap counts.
The weights are fit on game results, not on the line. So when the model and the line disagree, the model has its own football reasons.
The site shows betting lines only to compare. The pick is made first, and the line never changes it.
The Spotlight, Near the line and the Line's order in Rankings use the line in this way.
The line is a high standard, and it is usually a little ahead of the model. The pick section gives the record against it.
Stat tests
The Tests pane in Explorer gives each stat the same tests on the completed seasons. Each test answers one plain question. Each result gets one of five grades: strong, good, fair, weak or no.
Signal
Question: does the stat give the same answer on separate games? We calculate the stat twice for each player-season: once on odd weeks and once on even weeks. Signal is the share of the differences between players that repeats. The rest is chance. At 50% signal, half of what the stat shows is real.
Carryover
Question: does this season carry over to the next? Carryover is the correlation between one season and the next, for the same player or team. It is usually lower than signal, because rosters, coaches and health change.
Uniqueness
Question: does the stat show something that other stats do not? We find the existing stat that is closest to it. Uniqueness is the share of the stat that the closest stat does not explain. Below 10%, the stat is almost a copy.
Target
The target is the stat that you want to forecast. Each position group has one target. Change it in the Forecast part of the Tests pane, or at the top of the Scorecard.
Forecast, Link, the Verdict, the ladder and the stat map use the target. Signal, Carryover, Uniqueness and Game picks do not.
Forecast and self-forecast
Question: does this stat in weeks 1–9 forecast the target in weeks 10–18? The self-forecast is the target in weeks 1–9 forecasting itself in weeks 10–18. A stat that beats the self-forecast tells you more about the future than the target does.
A target with a self-forecast below .20 barely repeats. For such a target, the Scorecard names better guides. A forecast below .20 is a weak forecast, even when it beats the self-forecast.
Link
Question: does the stat go with the target in the same season? Link is the correlation between the two over full seasons. A negative link means that good values on the stat go with bad values on the target.
A stat with a link of .85 or more restates the target. The Link ladder leaves it out because it adds nothing new. A link shows that two things go together. It does not show that one causes the other.
Game picks (teams)
Question: does the stat pick the winner before kickoff? For each game from week 4 on, we use each team's earlier games that season. The team with the better value is the pick. We compare the result with point differential to date and with the betting favourite. The betting favourite is a high standard.
Correlation (r)
Correlation shows how closely two sets of values move together. It goes from 0, no link, to 1, a perfect link. Carryover, Forecast and Link are correlations.
Reading the Tests pane
The Verdict is one word for the whole stat: Strong, Good, Fair or Weak stat, or Little use. It is the middle grade of the stat's tests.
Under it, each test has its own row. The squares show the grade. The rank shows the stat's place among the group's stats on that test.
The Forecast part puts the stat's forecast and the self-forecast on one scale. The folds below hold the charts behind each test. They start closed.
Sample needed
The Tests view shows signal at a range of minimum volumes. This tells you how much playing time a player needs before the stat is mostly signal. The marked point is where signal first reaches 50%.
Volume check
The Tests view measures how closely a stat follows its volume component, such as dropbacks, targets or carries. Above .75, the stat mostly measures playing time, not quality. To fix this, divide by the volume component. You can also use z() to compare within a season.
Scorecard
The Scorecard compares every stat in a position group. Open it at the foot of the group's Board in Scout.
Its Verdict names the best guide to the target. The ladder under it shows the best forecasts. Each dot is a forecast, and each bar is its likely range.
The likely range is where the correlation would fall on most other samples. When the range of the best stat reaches the self-forecast, the gap may be chance.
The stat map shows each stat on two tests. Signal goes across and Forecast goes up. Stats in the top right are real and useful.
In the table, each bar shows a value on a fixed scale. A darker bar means a better grade. The tick in the Forecast column marks the self-forecast.
For teams, the side of the ball comes from the components that a formula uses. The fifths in the stat panel rank teams within each season.
Team results, such as win % and point differential, restate the outcome. They are not in the Link ladder. They do appear in the forecast ladder, because an early value forecasting a later value restates nothing.
Explorer
Explorer ranks every qualified row on a stat. The chart above the table has four views.
The chart
Distribution is the first view. It shows where every row sits on the stat.
Strip draws each row as a face at its value. The band holds the middle 80%, and the dashed line is the league average.
Histogram counts the rows in each range. Share below reads across from a value to the share of rows under it. Q-Q compares the values with a bell curve.
Past seasons draws the same weeks of earlier seasons as a dashed outline, so you can see if this season is unusual.
Two stats puts the ranking stat across and a second stat up. A larger face means more volume. The dashed lines are the league averages.
Related lists every stat by how closely it goes with the ranking stat, over full past seasons. Select one to open the pair in Two stats.
Over time draws each chosen row game by game. A dot is one game. The line is the last 4 games or the season to date.
Season to date uses every game so far, so its last point equals the leaderboard value. The shaded band holds the middle 80% of rows that week.
Rank shows each row's place that week. vs average shows the value minus the league average that week, so 0 is average.
At rest, the large number is the leaderboard value. Move along the chart to read one week. Scroll to zoom and drag to move.
Q-Q plot
A Q-Q plot compares the values with a bell curve. Dots on the line mean that the values follow a bell curve. A bend up at the right means that a few players stand far above the rest. Then the stat ranks the middle group less well.
Trend and percentile
The trend shows the season-to-date value after each game. Early points use few plays, so they move a lot. The dashed line is the league average after the same week. A percentile shows the share of qualified rows that a row beats. 100 is the best.
Minimum
A player qualifies when their volume per team game is at the minimum or above. For example, the QB minimum is 14 dropbacks per team game. Half-season weeks use half the volume. Functions such as z() compare qualified rows only.
Your own stats
The stat editor in the stats pane builds a stat from a formula. Start from a template, or type your own. The line under the formula says if it is valid.
While the editor is open, the Tests pane tests the draft. The Verdict then shows the change since the last valid draft.
Scout
Scout shows one team or player, or a position group's Board.
Board and Roster
A position button opens its Board. Find a team's players there, or pin a player or team to Your list.
The change card follows playing time, not hot streaks. For players, it compares his share of his team's carries, targets or snaps in his last 4 games with his season.
It opens once a player has 6 games. In 2019–2025, a fifth to a half of a change in share lasted into the next 4 games.
A hot or cold run on a per-play stat lasted almost not at all. So the Board does not list those runs.
For quarterbacks, the card lists teams whose last game was not started by the usual starter. It also lists a usual starter who is Out or Doubtful.
For teams, it compares strength now with strength 4 weeks before. Strength weighs every game, so one lucky week moves it little.
The injury card lists the group's players on the latest final injury report. Points lost is what the model takes off his team's score.
A Questionable player shows what he would cost if he sits. The biggest come first, so a big Questionable can rank above a small Out.
Leaders are the top 5 in the lead stat, among rows at the minimum. Each small line is the season to date after each game, against the league average.
On a team page, the Roster lists the most used players first. Role is a player's share of the team's dropbacks, carries, targets or defensive snaps.
The injury report is the final report before the team's next game. It lists every position and is shown for the season in progress.
Scout's chart
Scout draws the subject over the rest of the league. Each faint line is another team or qualified player, in its team colour. League turns them off.
The dashed line is the projected level. It is the actual season so far, pulled toward the league average by how much the stat repeats at that volume.
A stat that repeats well keeps most of its gap to average. A stat that repeats little is projected near the average.
Shading stands on the league average. The darker part is the gap projected to last; the lighter part, up to the actual line, is projected to fade.
The darker band holds the middle 50% of the league that week, inside the middle 80%. Marks on the right edge show where 1st, 10th, the middle and 10th from last sit.
We checked every stat, leaving one past season out each time. After weeks 3, 5, 7 and 9, the projected level was closer to weeks 10–18 than the season so far.
For team strength, the lower pane splits each week's strength into its reasons. The parts add up to the strength, and each has a rank of 32.
Under the weeks, W, L and T give each result. A small marker shows a week with a big strength move and its main reason, or a missed game.
Similar
Similar finds the rows whose stats are closest to the subject's in the same season and weeks. It uses only stats with 40% signal or more.
Each stat is put on the same scale first, so no stat counts more than another. 100% would mean the same values on every stat.
Outlook
Outlook estimates a stat for weeks 10–18 from the same stat in weeks 1–9. The estimate moves toward the league average, as past seasons did.
The range should hold the real value 8 times in 10. We checked this on each past season with the others. A stat shows only when it held 75% to 85% of the time.
Outlook opens after week 9. It does not forecast next season or a single game.
Availability
Each week shows whether the player played. A week the player missed shows the final injury report status, with the body part when nflverse has it.
Inactive means the team listed the player as inactive on game day. Injury reports and inactive lists start in 2019.
Defenders
DL, LB and DB use the position nflverse lists for each player. Edge rushers listed as OLB are in LB. The Pos column shows OLB, so you can tell them apart.
Tackles, sacks, QB hits, tackles for loss, passes defended, interceptions, forced fumbles and recoveries come from play-by-play credits. Only plays where the player was on defense count.
A stop is a tackle on a play where the offense did not gain expected points. Snaps come from the nflverse snap counts.
Play-by-play does not say who covered a receiver or who pressured the passer. So there are no coverage or pressure stats.
Rates per dropback use an estimate: his snaps times the share of plays that were dropbacks for his defense in his games.
IDP points use a common scoring. A solo tackle is 1, an assist 0.5, a sack 2, a tackle for loss 1 and a QB hit 0.5. A pass defended is 1, an interception 3, a forced fumble or recovery 2 and a touchdown 6.
Rankings
Rankings orders the 32 teams by the game model's strength, before each week's games.
Strength
Strength is the number of points a team would win by against an average team on a neutral field, before the week's games. It comes from the game model in Matchups. Each input adds its part: passing, running, scoring margins, results, the quarterback, missing players and little to play for. The team panel lists what strength is made of. A gap in strength between two teams is the expected margin between them on a neutral field.
Full strength leaves out the two parts that apply to one week only: missing players and little to play for. The team panel shows it when it differs from strength by half a point or more.
Week change is strength now minus strength last week, in points. The cards show the biggest rise and fall. Best game is this week's game whose lower-ranked team ranks highest.
A tier is a run of teams in rank order. Its top team would beat each of the others no more than 6 times in 10. In 2016–2022, the model's favourite won 54% of the games it called 50–60%. So a gap inside a tier is close to a coin flip.
Rankings move a lot. From week 7 to the end of the season, strength changes by about the gap between the best team and an average team. In 2016–2022, about 3 of each week 7 top 5 were still top 5 at season's end. So the page shows where a team's strength has been this season, not where it will end up.
The Line's order ranks teams by the season's betting lines up to the chosen week: one number per team plus home field. The footer checks last week's games: how often the team higher in each order won. From week 4 on in 2016–2022, the stronger team won 65% of games. The team with the better record won 62%.
The injury report in the team panel is the NFL's final report before the game. It lists every player called Out, Doubtful or Questionable. Players marked Key are the expected quarterback or a key player.
Season outlook
The season outlook plays out the rest of the regular season 4,000 times. Each game's win chance comes from the two teams' full strength this week. This week's games also count missing players. A game further away counts as closer to even, because strength will have moved by then. Playoff places go to the division winners, then the best records. Ties are split at random, not by the NFL's tiebreakers.
In 2016–2022 the outlook was within 6 points of what happened in every 10-point band. It also beat the same simulation with every game at 50%, but by a small margin. Most of what it knows comes from the record so far.
Standings and the playoff race
Standings follow the NFL's rules: win share first, with a tie counting as half a win. Ties in a division are broken by head-to-head games, then division record, common games, conference record, strength of victory and strength of schedule. Next come points difference in common games, then in all games. Wild cards use head-to-head only when one team beat or lost to all the others. Then come conference record, common games (at least 4), strength of victory and strength of schedule.
Two NFL steps are left out: the combined points rankings and net touchdowns. The team code stands in for the coin toss. On 2016–2025, these rules gave every real division winner and every real playoff seed.
The Playoff race shows each conference's seeds if the season ended before the chosen week. Division leaders take seeds 1–4 and the next three teams 5–7 (6 places and 2 byes before 2020).
Matchups
The Schedule lists every game of a season, playoffs included. Select a game to open its Game view.
The pick
Each pick adds up nine parts: home field, passing, running, scoring margins, Elo, the quarterback, missing players, little to play for and rest. Each part is a gap between the two teams.
Passing is a team rating from EPA per dropback. Running is a team rating from the share of designed runs that gained expected points.
Both allow for the strength of each opponent. Recent games count more, and last season still counts.
Defense EPA changes a lot from game to game, so these ratings rely mostly on offense. Defense still counts through scoring margins and Elo.
Scoring margins is a rating from points scored and allowed, again allowing for the opponent. The Elo rating moves after each game, and more after big wins.
No part uses betting lines. The model is built from football stats alone, so it can disagree with the line for its own reasons.
The line is only compared with the pick after the pick is made.
The quarterback part compares the expected starter with the team's usual starters. A backup who starts often costs his team several points.
The expected starter comes from the nflverse schedule for next week. If that player is Out or Doubtful on the final injury report, it is the team's latest other starter. For later weeks, it is the team's latest starter. For a played game, if the schedule names a quarterback who threw no passes, it is the one who threw the most.
Missing players counts the players a team ruled out on its final injury report. From 2019, it also counts the players on the team's inactive list.
The inactive list names the players who will not play, about 90 minutes before kickoff. Each missing player counts by his share of the team's recent snaps.
A player who has already missed several weeks counts little, because the ratings already show his absence. Quarterbacks are left out, because the quarterback part covers them.
Upcoming games show missing players only after the week's injury report is out, usually the day before the game.
Upcoming games use the injury report alone. Our data gets each inactive list the next morning, so inactive lists count from the day after the game.
Little to play for starts in week 12. We play out the rest of the season 4,000 times from the standings before the week.
When a game barely changes a team's chance of a playoff place or a bye, the team has little to play for. Such teams do about a point worse.
Rest is the gap in days since each team's last game. Its effect is small.
The parts add up to the predicted margin. The win chance comes from the margin and the usual size of a miss.
We chose the model on 2016–2022 and then tested it once on 2023–2025. On those games it picked about 65% right. The betting favourite won about 68%.
On 2023–2025 the model and the line were level in weeks 1–4. From week 5 on, the line was ahead.
The model and the line are usually close. Under 3 points apart, a game says Near the line: the model claims nothing against the line there.
The 3-point rule was set in advance on 19 October 2026, for this model. It is graded from 2026 week 8, with weights fit on earlier seasons only.
On 2023–2025, this model was on the right side in 47% of such games. So the rule is a test, not a claim.
The Model vs line order shows how often the result fell on the model's side, with its likely range.
A pick for a completed season uses weights fit before that season. Every rating uses only games before the week of the game.
Team strength is the number of points a team would win by against an average team on a neutral field. It uses the same ratings and weights as the pick.
The gap between two teams' strength is the pick's margin on a neutral field with equal rest.
Spotlight
The Spotlight shows up to three games of the week. The closest game is the pick nearest to even. The biggest favourite is the pick with the highest win chance.
Model and line differ is the game where the two are furthest apart. It shows only when they are 3 or more points apart.
Why the pick
The Why card builds the pick from Even, one reason at a time. The reasons for the pick come first, biggest first.
The other team's reasons then step back. The last bar ends at the pick's margin. Reasons that round to 0.0 points are listed under No effect.
Point at or select a reason to read where it comes from in the box below. Missing players shows the points each team loses for its players out.
Head to head and the game chart
The main chart shows every game the two teams played, playoffs included. Pick a meeting to see how that game went.
Score lead follows the score, drive by drive. Each bar is a drive, and markers show scores and other key plays.
In-game chance is each team's chance to win after each play. For played games it comes from nflverse.
Two teams that never met show team strength instead: each team's points against an average team, before each week.
When a team has the ball
The Game view has one panel for each offense against the other defense. Each panel has a few lines on where this side is decided, the key players, then matchup stats and style stats.
Matchup stats pair an offense stat with the defense stat that measures the same thing. There are seven: passing, running, play success, big plays, sacks, turnovers and scoring drives.
The dot is the offense, the ring is what the defense allows, and the diamond is the estimate for this game. Right is better for the offense.
The estimate is the expected rate times the offense's plays or drives a game so far. "Most games" is where 8 in 10 results landed around such estimates in 2023–25.
Each game swings much more than teams differ. So a row gives a usual range, not a winner.
Past games show how much of each stat follows the offense. This is the offense share. Turnovers depend more on the defense, and mostly on chance.
A Mismatch tag marks a row where one side ranks at the 67th percentile or above and the other at the 33rd or below.
"Mostly chance" marks a stat where the two teams' past values decide less than half of a game's result.
Style stats show how an offense plays, not how well. On defense, they show what other offenses chose to do against that defense.
Big difference means about 13 or more places apart. Close match means within about 6 places, with both near the same end.
Key players
Each offense panel shows five cards: the quarterback, two key players from RB, WR and TE, and two defenders from the other team.
A key player leads his team in plays and points over a backup together. The two can play the same position.
The key score adds two standard scores: plays a game, and points over a backup. Each counts the same.
Points over a backup is the expected points a player adds per game, compared with a typical backup given the same plays.
It multiplies two things. Usage is the carries and targets a game. Per play is the EPA on each of those plays.
A player with few plays is pulled toward the league average, because a short run of plays can mislead.
A backup gets a little less than the season's average on each play. Each season sets its own average.
Each card has a box. Wider means more chances a game, and taller means more on each chance than the labelled line. A bigger box is more a game.
For a running back or receiver, the line is a typical backup. For the quarterback, it is the league average per dropback.
The defenders are two of three: the top pass rusher, run stopper and cover player with at least 20 snaps a game. The two rank highest in their position group.
A defender's line is the typical rate among qualified players at his position. Chances are snaps, or pass snaps for rushers and cover players.
The role above a name is his place on his team by use, such as Lead back or No. 2 target.
We tested many rules on twelve past seasons and three outcomes: later points over a backup, later yards and touchdowns, and missed games.
Points over a backup alone missed busy players. Adding plays a game named players who gained more later, and no rule did clearly better.
When a team's key player missed a game, its offense did worse than expected, by more than his own points. The number is a floor.
How much a team uses a player mostly lasts through a season. Being above or below a backup after a few weeks lasted only a little more often than chance.
A status of Out, Doubtful or Questionable comes from the team's final injury report for that game's week.
Live scores
The scores bar under the top bar shows each game of the week. Scores, the clock and who has the ball come from ESPN.
During games our server keeps ESPN's answer for about 15 seconds, so many readers share one request. Before kickoff, each game shows the model's win chance.
A live game also opens in its Game view, with the score and the drive chart as they happen.
Our own in-game chance for live games is not shown yet. It missed one of its accuracy checks on past seasons.
Data
Sources
Play-by-play comes from nflverse. The tests, Explorer and Scout use the regular season only. Matchups also shows the playoffs. Future games and betting lines come from the nflverse schedule. EPA, win probability, CPOE, catch probability and expected YAC come from the nflfastR models. Scrambles count as dropbacks. Designed runs are separate. Positions come from the nflverse player table.
Injury reports, inactive lists and snap counts come from nflverse too. The data refreshes four times a week: Sunday, Tuesday, Thursday and Saturday.
Live scores come from ESPN. We also save ESPN's betting lines during the week, to check the model against the final line later. They never feed a pick.
Team logos come from ESPN and player photos from NFL.com, through the nflverse team and player tables. We do not keep copies.
Technical names
This section is for readers who know statistics. It also gives the names that earlier versions of this page used.
- Signal is split-half reliability. It is the odd-week and even-week Pearson correlation, with the Spearman-Brown correction to a full season. Values below 0 show as 0%. Earlier name: discrimination.
- Carryover is the year-over-year Pearson correlation. Earlier name: stability.
- Uniqueness is 1/VIF, where VIF = 1/(1 − r²) and r is the highest correlation with an existing stat. This pairwise VIF is a lower bound on the full VIF. Earlier name: independence.
- Forecast is the Pearson correlation from weeks 1–9 of the stat to weeks 10–18 of the target. Self-forecast was called the baseline.
- Link is the same-season Pearson correlation with the target. Signs are flipped for lower-is-better stats, so a positive value always means good goes with good.
- The likely range is the 95% confidence interval of r, from the Fisher z transform with standard error 1/√(n − 3). It does not adjust for the many stats tested at once.
- The prediction is a linear model with no intercept. Its inputs are the gaps between the teams, the site and the rest gap. The weights come from ridge regression on scaled inputs.
- Passing is a ridge-regression rating of EPA per dropback, with offense and defense terms. Running is the same for rush success rate: the share of designed runs with EPA > 0. Games are weighted by plays and by 0.89 per week of age.
- The 3-point rule is graded on rolling-origin picks: each season is predicted with weights fit on 2016 to the season before. The likely range of a share is the 95% Wilson interval.
- Scoring margins is a ridge rating on game margins, like a simple rating system. Elo uses a margin-of-victory multiplier in the FiveThirtyEight NFL form.
- The quarterback value is recency-weighted EPA per dropback, shrunk toward a replacement level of −0.30. The part is that value minus the team's recent starters.
- The win chance is Φ(margin / σ), a normal distribution. σ is the root-mean-square error of the fit.
- Settings were chosen by leave-one-season-out validation on 2016–2022. The test seasons 2023–2025 played no part in any choice. The spec lists every model tried.
- Points over a backup is volume × (shrunk EPA per opportunity − backup level). RB opportunities are carries plus targets; WR/TE opportunities are targets. Shrinkage adds 400 (RB) or 200 (WR/TE) plays at the season's play-weighted mean. These strengths minimise squared error against the rest-of-season rate.
- The backup level is the season's play-weighted mean minus 0.015 (RB) or 0.076 (WR/TE). These gaps are the 2014–2025 EPA per opportunity of players outside each team's top RB or top three receivers, relative to the league.
- The rule was chosen in
pipeline/studies/key_players.py, leaving one season out, with cutoffs from week 3 to 16. The outcomes were later value over a backup, yards plus 10 per touchdown, and the offense in a first missed game. - The key score is z(usage) + z(points over a backup), within season and weeks, over every row (minimum 0). On within-team picks it tied a ridge regression, equal-weight z mixes and a first principal component.
- The Game view shows a team's top 2 by key score across its RB and WR/TE rows, so both can play one position.
- It beat points over a backup alone on later yards and touchdowns by 5–6 standard errors. The old EPA-per-target rule picked receivers worth 0.26 EPA a game less.
- In the absence check, the offense lost 3.2 times the missing player's value (slope −3.21, SE 0.55, 5,152 team-games). The multiple is loose and may be confounded, so the page does not use it.
- The value box of a quarterback or defender splits a count a game exactly into chances × rate. The line is the chance-weighted rate of the qualified rows.
- Quarterback: dropbacks × EPA per dropback. Run stopper: snaps × stop rate. Pass rusher and cover player: estimated pass snaps × QB-hit rate, or × passes defended plus interceptions.
- The offense share comes from a weighted least-squares fit without intercept. The response is the in-game value minus the league mean. The weight is the offense's in-game plays.
- The matchup estimate is league + a(offense − league) + d(defense allowed − league), times the offense's volume a game. a and d are the offense share weights.
- Its usual range is the 10th to 90th percentile of the misses on the training games. A stat is mostly chance when a + d < 0.5.
- The projected level is a true-score estimate: average + n/(n + K)·(so far − average). K is the volume where split-half reliability first reaches 0.5. The gate is in
tests/likely.gate.mjs. - The strength reasons are each input's weight × (its value − that week's league mean). For this linear model they are the exact SHAP values against the 32 teams.
- A stat was called a metric. The data files and code still use the word metric.