NFL · Empirical Bayes

True-Talent Leaderboards

A raw single-season rate is a noisy guess at a player’s real ability, and the noise is worst for the smallest samples — so a naïve leaderboard is topped by whoever got lucky in the fewest tries. This one shrinks every rate toward its position-group prior by how much the sample can be trusted, and shows a 90% credible interval instead of a point. Toggle raw vs. shrunk to watch the flukes fall back to the pack.

EPA per dropback · 2021

Mean QB EPA per dropback.

Beats raw by
14.9%
lower out-of-sample error
RMSE raw → shrunk
0.17 → 0.14
odd vs. even weeks
Split-half reliability
0.47
how repeatable the raw stat is
Stabilizes at
200
dropbacks to trust the number
shrunkrawthe shrink90% CI
-0.20.00.2avg1Aaron RodgersGB · 559+0.182Patrick MahomesKC · 688+0.173Tom BradyTB · 740+0.164Jimmy GaroppoloSF · 469+0.155Matthew StaffordLA · 634+0.156Justin HerbertLAC · 709+0.147Dak PrescottDAL · 631+0.148Joe BurrowCIN · 571+0.149Josh JohnsonBAL · 88+0.1210Kyler MurrayARI · 514+0.1011Josh AllenBUF · 675+0.1012Teddy BridgewaterDEN · 460+0.1013Kirk CousinsMIN · 587+0.1014Gardner MinshewPHI · 66+0.0915Mac JonesNE · 550+0.0816Jameis WinstonNO · 172+0.0817Colt McCoyARI · 105+0.0718Trey LanceSF · 75+0.0719Cooper RushDAL · 50+0.0720Joe FlaccoNYJ · 44+0.0621Nick FolesCHI · 40+0.0622Derek CarrLV · 666+0.0523Tua TagovailoaMIA · 409+0.0524Nick MullensCLE · 29+0.0525Lamar JacksonBAL · 421+0.0426Ryan TannehillTEN · 578+0.0427Jalen HurtsPHI · 459+0.0428Russell WilsonSEA · 435+0.0429Mike WhiteNYJ · 137+0.0330Carson WentzIND · 552+0.03

Each row is a player: the solid dot is the shrunk estimate, the hollow dot the raw rate, joined by the red pull of regression; the grey bar is the 90% credible interval. A hollow shrunk dot means the sample is below the stabilization line — the number is mostly the position prior. Switch to Raw rank and watch the small-sample names climb.

EPA per dropback · 2021 · full board

EPA per dropback leaderboard for the 2021 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPosdropbacksRawShrunk90% interval
1Aaron RodgersGBQB559+0.23+0.18+0.09+0.27
2Patrick MahomesKCQB688+0.20+0.17+0.08+0.25
3Tom BradyTBQB740+0.20+0.16+0.08+0.25
4Jimmy GaroppoloSFQB469+0.20+0.15+0.05+0.25
5Matthew StaffordLAQB634+0.19+0.15+0.06+0.24
6Justin HerbertLACQB709+0.17+0.14+0.06+0.23
7Dak PrescottDALQB631+0.17+0.14+0.05+0.23
8Joe BurrowCINQB571+0.17+0.14+0.05+0.23
9Josh Johnson◦ provisionalBALQB88+0.31+0.12-0.03+0.28
10Kyler MurrayARIQB514+0.13+0.10+0.01+0.20
11Josh AllenBUFQB675+0.12+0.10+0.01+0.19
12Teddy BridgewaterDENQB460+0.12+0.10-0.00+0.20
13Kirk CousinsMINQB587+0.12+0.10+0.01+0.19
14Gardner Minshew◦ provisionalPHIQB66+0.24+0.09-0.07+0.25
15Mac JonesNEQB550+0.10+0.08-0.01+0.18
16Jameis Winston◦ provisionalNOQB172+0.13+0.08-0.05+0.21
17Colt McCoy◦ provisionalARIQB105+0.14+0.07-0.07+0.22
18Trey Lance◦ provisionalSFQB75+0.14+0.07-0.09+0.22
19Cooper Rush◦ provisionalDALQB50+0.16+0.07-0.10+0.23
20Joe Flacco◦ provisionalNYJQB44+0.14+0.06-0.11+0.23
21Nick Foles◦ provisionalCHIQB40+0.14+0.06-0.11+0.22
22Derek CarrLVQB666+0.06+0.05-0.04+0.14
23Tua TagovailoaMIAQB409+0.05+0.05-0.06+0.15
24Nick Mullens◦ provisionalCLEQB29+0.08+0.05-0.12+0.22
25Lamar JacksonBALQB421+0.05+0.04-0.06+0.15
26Ryan TannehillTENQB578+0.04+0.04-0.05+0.14
27Jalen HurtsPHIQB459+0.04+0.04-0.06+0.14
28Russell WilsonSEAQB435+0.04+0.04-0.06+0.14
29Mike White◦ provisionalNYJQB137+0.01+0.03-0.11+0.17
30Carson WentzINDQB552+0.02+0.03-0.07+0.12
31Garrett Gilbert◦ provisionalWASQB33-0.08+0.02-0.15+0.19
32Geno Smith◦ provisionalSEAQB107-0.02+0.02-0.13+0.17
33Matt RyanATLQB601+0.01+0.02-0.07+0.11
34Tim Boyle◦ provisionalDETQB95-0.04+0.02-0.14+0.17
35Baker MayfieldCLEQB462-0.01+0.01-0.10+0.11
36Jordan Love◦ provisionalGBQB66-0.11+0.00-0.15+0.16
37Case Keenum◦ provisionalCLEQB77-0.11+0.00-0.15+0.16
38Mason Rudolph◦ provisionalPITQB57-0.15-0.00-0.16+0.16
39Drew Lock◦ provisionalDENQB119-0.08-0.00-0.15+0.14
40Daniel JonesNYGQB383-0.03-0.00-0.11+0.10
41Trevor SiemianNOQB201-0.05-0.01-0.13+0.12
42Sean Mannion◦ provisionalMINQB38-0.29-0.01-0.18+0.16
43Brandon Allen◦ provisionalCINQB38-0.29-0.01-0.18+0.16
44Tyrod Taylor◦ provisionalHOUQB162-0.09-0.02-0.15+0.12
45Jared GoffDETQB529-0.05-0.02-0.12+0.07
46PJ Walker◦ provisionalCARQB73-0.20-0.02-0.18+0.13
47Taylor HeinickeWASQB532-0.06-0.03-0.12+0.07
48Jacoby BrissettMIAQB244-0.10-0.03-0.16+0.09
49Ben RoethlisbergerPITQB646-0.07-0.04-0.13+0.05
50Andy DaltonCHIQB256-0.12-0.05-0.17+0.07
51Tyler HuntleyBALQB205-0.15-0.05-0.18+0.07
52Davis MillsHOUQB424-0.10-0.06-0.16+0.05
53Trevor LawrenceJAXQB636-0.09-0.06-0.15+0.03
54Cam Newton◦ provisionalCARQB137-0.29-0.09-0.23+0.05
55Ian Book◦ provisionalNOQB28-1.06-0.09-0.27+0.08
56Jake Fromm◦ provisionalNYGQB66-0.53-0.10-0.26+0.06
57Sam DarnoldCARQB442-0.17-0.11-0.21-0.00
58Justin FieldsCHIQB304-0.21-0.11-0.23+0.00
59Zach WilsonNYJQB429-0.22-0.14-0.24-0.04
60Mike Glennon◦ provisionalNYGQB174-0.47-0.20-0.33-0.06

How the shrinkage works

Two estimators

Rate stats (completion %, success rate, catch rate) use a beta-binomial model: a Beta(α, β) prior fit by marginal likelihood over each position group, then a Beta posterior per player. Per-play averages (EPA, CPOE, yards) use a normal-normal model with DerSimonian–Laird between-player variance. Both pull each player toward their group by exactly how thin their sample is.

Does it help? & the fine print

The trust panel’s numbers come from a leakage-free odd/even-week holdout: fit on odd weeks, predict even-week raw. Shrinkage lowers out-of-sample error for every stat. Priors are fit per season and per position (WR and TE separately), so a TE’s baseline isn’t a skill. Regular season only, 2016–2025. Rushing and receiving efficiency are heavily scheme-driven — read the wide bands as the honesty they are.

Source: nflverse play-by-play. Counted and computed deterministically — never modeled by a language model. Built by build_nfl_leaderboards.py (byte-reproducible).