ScoutIndex

ScoutIndex models

Methodology

Every model is published in full and built from public nflverse data. A formula change ships as a new version — existing numbers are never edited after the fact.

The ScoutIndex Rating · scoutindex-rating-v2

One number, 0–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( 50 + 15 · composite_z , 0 , 99 )

RatingMeaning
~50average across every rated player, backups included
~60average qualified starter
~75clear starter, fringe Pro Bowl
85+All-Pro tier
95+historically dominant season
below ~25replacement 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.
  5. Re-standardize that weighted average within its own cohort (mean 0, standard deviation 1) before mapping it onto the 0–99 scale. A weighted average of several already-clipped z-scores doesn't itself have a standard deviation of exactly 1, and how far it varies from 1 differs by position — so without this step, positions with fewer or more correlated components would quietly get a different effective scale than positions with more independent ones. This step is what lets one global formula reach both ends of 0–99 fairly for every position.

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 (v2)

  • 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.
  • Pre-2006 receivers lose the CPOE / air-yards components.
  • No team-defense or special-teams rating yet.

Source: etl/scoutindex_etl/ratings.py. Roadmap — opponent adjustment; a multi-year aging prior.

Win probability & projections

Three prediction models, all transparent. Full write-up: nflverse data in, published formulas out.

Team Elo & win probability · scoutindex-winprob-v1.5

A standard NFL Elo model (FiveThirtyEight style): K-factor 20, a 55-point home-field bonus, the margin-of-victory multiplier with the autocorrelation fix, and a 40% between-season regression to 1500. Win probability is the logistic function of the Elo gap; projected margin is the gap divided by 25.

v1.5 adds a starting-QB overlay. Each QB carries a rolling, walk-forward value (an EPA/dropback average, shrunk toward a replacement level on his first tracked start). When a team's actual starter differs from the QB who's been starting for them, that game's probability and margin shift by the value gap between them, scaled to Elo points — calibrated by backtesting every game since 1999. It's zero whenever the normal starter plays, so most games are unaffected; the team's underlying Elo rating itself is never changed by it.

Across ~7,300 games since 1999 it picks the straight-up winner ~64% of the time (Brier ~0.22) — in line with published NFL Elo models. ~66–67% is roughly the ceiling for any pregame model. The QB overlay's gain is modest and shows up mainly in calibration (Brier/log-loss), not the straight-up rate — see the backtest numbers on the track-record page. See the full track record →

Playoff simulation · scoutindex-playoffs-v1

A Monte-Carlo simulation of the season, ~20,000 runs. Each run plays out every remaining game (margin drawn from a Normal around the Elo projection, SD ~16), seeds each conference, and plays the bracket. Aggregating gives each team's odds to make the playoffs, win its division, get the #1 seed, and reach / win the Super Bowl.

Simplified tiebreakers (win% → head-to-head → division record → point diff); Elo is static through the sim; injuries and trades aren't modelled.

Player projections · scoutindex-projection-v1

  1. Recent form — the player's per-game average last season.
  2. Regress toward a position baseline by sample size (heavy prior — 6–8 games).
  3. Adjust for what the opponent allowed to that position, clamped to ±30%.
  4. Distribution — Poisson for counts (receptions, TDs), Normal for yardage. Output is a mean, the 10th–90th percentile range, and P(stat > line).

Preseason projections lean entirely on last year — no new-team fits, rookies, or injuries yet. Players with under 4 games last season are skipped; no OL, defense or kicker projections.

Not for wagering

Win probabilities and projections are informational estimates with real uncertainty — not advice for betting, daily fantasy, or any decision where an error costs money. See the Terms of Service.

Model accuracy · Ratings leaderboard · This week's predictions · Playoff picture