SIScoutIndexNFL Data

ScoutIndex Rating · scoutindex-rating-v1

How the rating is computed

Published in full. A formula change ships as v2 — v1 numbers are never edited after the fact.

One number, 20–99, per player per regular season. It is position-relative: every rating compares a player only to others at the same position that season. It is built entirely from public nflverse / nflfastR data — no proprietary charting. The backbone is EPA (expected points added), blended with volume and a few position-specific rate stats.

The scale

overall = clamp( 60 + 13 · composite_z , 20 , 99 )

RatingMeaning
~60league-average qualified starter
~75clear starter, fringe Pro Bowl
85+All-Pro tier
95+historically dominant season
below ~45replacement level

How a component becomes a number

  1. Aggregate the player's weekly regular-season rows into season totals and rates.
  2. Shrink each rate toward the cohort mean by sample size: x_adj = (n·x + k·μ) / (n + k). This stops a backup QB with 12 great throws from topping the list. Volume stats aren't shrunk.
  3. z-score across the cohort. Stats where lower is better (INTs, fumbles) are negated.
  4. Weighted-average the z-scores. A component whose stat doesn't exist for a player (e.g. CPOE before 2006) is dropped and the rest renormalized.

QB — qualify: 8 games & 224 attempts

ComponentMetricWeight
Dropback efficiency(passing EPA + rushing EPA) / dropbacks0.34
Total EPApassing EPA + rushing EPA0.24
AccuracyCPOE — completion % over expected (2006+)0.12
Ball security− interceptions / dropbacks0.12
Conversion(passing first downs + ½ passing TD) / dropbacks0.08
Volumedropbacks (attempts + sacks)0.10

RB — qualify: 8 games & 100 carries

ComponentMetricWeight
Rush efficiencyrushing EPA / carry0.24
Total EPArushing EPA + receiving EPA0.24
Yards per carryrushing yards / carry0.12
Conversion(rushing first downs + ½ rushing TD) / carry0.10
Receivingreceiving EPA / target + reception volume0.14
Ball security− fumbles lost / touch0.06
Volumecarries + receptions0.10

WR / TE — qualify: 8 games & 40 / 30 targets

ComponentMetricWeight
Target efficiencyreceiving EPA / target0.30
Total receiving EPAreceiving EPA0.22
Yards per targetreceiving yards / target0.12
Hands & conversioncatch rate × (first downs + ½ TD) / reception0.10
Roletarget share0.14
Volumetargets0.12

K — qualify: 8 games & 15 FG attempts

ComponentMetricWeight
FG make ratefield goals made / attempted0.55
Long rangeseason-long field goal0.15
PAT reliabilityPAT made / attempted0.10
VolumeFG + PAT attempts0.20

DEF — an impact score, not a true rating

ComponentMetricWeight
Pass rushsacks + ½ tackles for loss0.30
Ball skills2 × interceptions + passes defended0.25
Run defensetackles for loss + 0.05 × tackles0.20
Splash3 × defensive TD + 1.5 × forced fumbles0.15
Availabilitygames played0.10

Box-score stats catch splash plays but miss coverage, gap discipline, and snap share. Treat DEF as 'how much did this player show up in the box score', pending Phase 2 participation data. All metrics per game.

Known limitations (v1)

  • Defense is box-score only.
  • No opponent adjustment — a strong performance vs. a weak defense looks the same as vs. an elite one.
  • No aging curve, no multi-year prior — each season stands alone.
  • QB ceilings run lower (~92) than skill positions (~99) because QB stats vary less within their cohort. Honest, not a bug.
  • Pre-2006 receivers lose the CPOE / air-yards components.
  • No team-defense or special-teams rating yet.

Source: etl/scoutindex_etl/ratings.py. Roadmap — v1.1 weekly game scores; v2 opponent adjustment and per-position calibration; later an Elo team rating feeding ScoutIndex Win Probability.

← Ratings leaderboard