Football, measured

Method & limits

How it's built

Everything on this site is generated by one Python pipeline from public nflverse data. Nothing is typed in by hand, and there are no letter grades or curves. Last rebuilt 2026-11-14.

Teams

Regular-season passes and runs from nflverse play-by-play. EPA, success and win probability are nflverse's own models. Pass rate over expected uses nflverse's pass_oe on 1st and 2nd down with win probability between 20% and 80%, outside the last two minutes of a half. Ranks are positions on each measure. Swing plays are the plays with the biggest win-probability change for or against the team.

4th downs

Each option's expected points come from curves fitted on 2018–2025: EP of a first down by yard line, conversion rate by distance, field-goal make rate by kick distance, and where the opponent starts after a punt. Because expected points ignore score and clock, only quarters 1–3 and the 4th quarter with more than five minutes left, in games within 16 points, are graded. A call is “clear” when the best option beats the next by 0.5 EP or more. Unit tests check the obvious cases, like punting on 4th and 10 from your own 20.

Draft

Drafted players 2000–2020 joined to their combine results. Two logistic models predict 3+ seasons as a primary starter: one from draft slot and position group only, one that adds height, weight and six drills, each z-scored within position group using training-class means (a skipped test counts as average). Fitted on 2000–2012, scored on 2013–2020, so every held-out player has had at least six seasons. Regularisation is chosen on a time split inside the training classes, and the interval on the AUC difference is a paired bootstrap over held-out players. Athletic comps for the newest class are the closest combine profiles among drafted players in the same position group, measured in standard deviations on the tests both took (at least four).

What this can't tell you

  • EPA per play doesn't adjust for opponents, and partial seasons are noisy.
  • The 4th-down model is expected points only. It ignores score, clock, weather and team strength, and doesn't grade late close-game calls.
  • “Seasons started” is a coarse outcome and depends on the team that drafted the player.
  • Skipping combine drills became far more common in recent classes, so skip flags learned on older classes don't transfer. They're left out of the main model.
  • The hero's opening play is a drawing, not a real snap. The chart it turns into is real 2025 data.

Code, tests and the reproduce steps: github.com/satwikmedipalli/football