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-v1
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 )
| Rating | Meaning |
|---|---|
| ~60 | league-average qualified starter |
| ~75 | clear starter, fringe Pro Bowl |
| 85+ | All-Pro tier |
| 95+ | historically dominant season |
| below ~45 | replacement level |
How a component becomes a number
- Aggregate the player's weekly regular-season rows into season totals and rates.
- 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.
- z-score across the cohort. Stats where lower is better (INTs, fumbles) are negated.
- 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
| Component | Metric | Weight |
|---|---|---|
| Dropback efficiency | (passing EPA + rushing EPA) / dropbacks | 0.34 |
| Total EPA | passing EPA + rushing EPA | 0.24 |
| Accuracy | CPOE — completion % over expected (2006+) | 0.12 |
| Ball security | − interceptions / dropbacks | 0.12 |
| Conversion | (passing first downs + ½ passing TD) / dropbacks | 0.08 |
| Volume | dropbacks (attempts + sacks) | 0.10 |
RB — qualify: 8 games & 100 carries
| Component | Metric | Weight |
|---|---|---|
| Rush efficiency | rushing EPA / carry | 0.24 |
| Total EPA | rushing EPA + receiving EPA | 0.24 |
| Yards per carry | rushing yards / carry | 0.12 |
| Conversion | (rushing first downs + ½ rushing TD) / carry | 0.10 |
| Receiving | receiving EPA / target + reception volume | 0.14 |
| Ball security | − fumbles lost / touch | 0.06 |
| Volume | carries + receptions | 0.10 |
WR / TE — qualify: 8 games & 40 / 30 targets
| Component | Metric | Weight |
|---|---|---|
| Target efficiency | receiving EPA / target | 0.30 |
| Total receiving EPA | receiving EPA | 0.22 |
| Yards per target | receiving yards / target | 0.12 |
| Hands & conversion | catch rate × (first downs + ½ TD) / reception | 0.10 |
| Role | target share | 0.14 |
| Volume | targets | 0.12 |
K — qualify: 8 games & 15 FG attempts
| Component | Metric | Weight |
|---|---|---|
| FG make rate | field goals made / attempted | 0.55 |
| Long range | season-long field goal | 0.15 |
| PAT reliability | PAT made / attempted | 0.10 |
| Volume | FG + PAT attempts | 0.20 |
DEF — an impact score, not a true rating
| Component | Metric | Weight |
|---|---|---|
| Pass rush | sacks + ½ tackles for loss | 0.30 |
| Ball skills | 2 × interceptions + passes defended | 0.25 |
| Run defense | tackles for loss + 0.05 × tackles | 0.20 |
| Splash | 3 × defensive TD + 1.5 × forced fumbles | 0.15 |
| Availability | games played | 0.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.
Win probability & projections
Three prediction models, all transparent. Full write-up: nflverse data in, published formulas out.
Team Elo & win probability · scoutindex-winprob-v1
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.
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.
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
- Recent form — the player's per-game average last season.
- Regress toward a position baseline by sample size (heavy prior — 6–8 games).
- Adjust for what the opponent allowed to that position, clamped to ±30%.
- 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.
Ratings leaderboard · This week's predictions · Playoff picture