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 · 2018

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
173
dropbacks to trust the number
shrunkrawthe shrink90% CI
-0.20.00.20.4avg1Patrick MahomesKC · 606+0.302Drew BreesNO · 508+0.253Philip RiversLAC · 547+0.214Ben RoethlisbergerPIT · 701+0.185Jared GoffLA · 595+0.176Ryan FitzpatrickTB · 261+0.177Matt RyanATL · 655+0.168Andrew LuckIND · 658+0.159Tom BradyNE · 590+0.1410Matt BarkleyBUF · 26+0.1311Kyle AllenCAR · 31+0.1212Russell WilsonSEA · 471+0.1213Mitchell TrubiskyCHI · 461+0.1014Deshaun WatsonHOU · 562+0.1015Jameis WinstonTB · 407+0.1016Nick MullensSF · 288+0.1017Carson WentzPHI · 431+0.0818Aaron RodgersGB · 647+0.0819Nick FolesPHI · 203+0.0820Andy DaltonCIN · 384+0.0721Baker MayfieldCLE · 515+0.0722Cam NewtonCAR · 501+0.0723Eli ManningNYG · 627+0.0524Joe FlaccoBAL · 394+0.0525Dak PrescottDAL · 583+0.0526Jimmy GaroppoloSF · 103+0.0427Marcus MariotaTEN · 374+0.0428Colt McCoyWAS · 58+0.0329Matthew StaffordDET · 597+0.0330Chase DanielCHI · 86+0.0231Derek CarrLV · 598+0.0232Kirk CousinsMIN · 648+0.00

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 · 2018 · full board

EPA per dropback leaderboard for the 2018 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPosdropbacksRawShrunk90% interval
1Patrick MahomesKCQB606+0.37+0.30+0.21+0.39
2Drew BreesNOQB508+0.31+0.25+0.15+0.35
3Philip RiversLACQB547+0.26+0.21+0.12+0.31
4Ben RoethlisbergerPITQB701+0.21+0.18+0.09+0.27
5Jared GoffLAQB595+0.20+0.17+0.08+0.26
6Ryan FitzpatrickTBQB261+0.23+0.17+0.04+0.29
7Matt RyanATLQB655+0.19+0.16+0.07+0.25
8Andrew LuckINDQB658+0.17+0.15+0.06+0.24
9Tom BradyNEQB590+0.16+0.14+0.04+0.23
10Matt Barkley◦ provisionalBUFQB26+0.55+0.13-0.05+0.31
11Kyle Allen◦ provisionalCARQB31+0.42+0.12-0.06+0.30
12Russell WilsonSEAQB471+0.14+0.12+0.02+0.22
13Mitchell TrubiskyCHIQB461+0.12+0.10+0.00+0.21
14Deshaun WatsonHOUQB562+0.11+0.10+0.00+0.19
15Jameis WinstonTBQB407+0.11+0.10-0.01+0.20
16Nick MullensSFQB288+0.11+0.10-0.02+0.22
17Carson WentzPHIQB431+0.09+0.08-0.02+0.19
18Aaron RodgersGBQB647+0.08+0.08-0.01+0.17
19Nick FolesPHIQB203+0.08+0.08-0.06+0.21
20Andy DaltonCINQB384+0.07+0.07-0.04+0.18
21Baker MayfieldCLEQB515+0.07+0.07-0.03+0.17
22Cam NewtonCARQB501+0.07+0.07-0.03+0.17
23Eli ManningNYGQB627+0.05+0.05-0.04+0.14
24Joe FlaccoBALQB394+0.04+0.05-0.06+0.16
25Dak PrescottDALQB583+0.04+0.05-0.04+0.14
26Jimmy Garoppolo◦ provisionalSFQB103-0.00+0.04-0.11+0.20
27Marcus MariotaTENQB374+0.02+0.04-0.07+0.15
28Colt McCoy◦ provisionalWASQB58-0.10+0.03-0.14+0.20
29Matthew StaffordDETQB597+0.01+0.03-0.07+0.12
30Chase Daniel◦ provisionalCHIQB86-0.07+0.02-0.14+0.18
31Teddy Bridgewater◦ provisionalNOQB25-0.33+0.02-0.17+0.20
32Derek CarrLVQB598+0.00+0.02-0.08+0.11
33Lamar JacksonBALQB186-0.04+0.01-0.12+0.15
34Brock OsweilerMIAQB195-0.04+0.01-0.13+0.14
35Alex SmithWASQB349-0.02+0.01-0.11+0.12
36Josh Johnson◦ provisionalWASQB102-0.10+0.01-0.15+0.16
37Kirk CousinsMINQB648-0.02+0.00-0.09+0.09
38Sam DarnoldNYJQB444-0.03-0.00-0.11+0.10
39Jeff DriskelCINQB195-0.08-0.01-0.14+0.13
40Case KeenumDENQB620-0.03-0.01-0.10+0.08
41Blake BortlesJAXQB436-0.06-0.02-0.13+0.08
42Taylor Heinicke◦ provisionalCARQB58-0.29-0.02-0.19+0.15
43C.J. BeathardSFQB189-0.14-0.04-0.18+0.10
44Blaine Gabbert◦ provisionalTENQB106-0.22-0.04-0.20+0.11
45Josh AllenBUFQB348-0.11-0.05-0.17+0.06
46Tyrod Taylor◦ provisionalCLEQB97-0.30-0.06-0.22+0.09
47DeShone Kizer◦ provisionalGBQB45-0.59-0.07-0.24+0.11
48Josh McCown◦ provisionalNYJQB116-0.28-0.07-0.22+0.08
49Sam Bradford◦ provisionalARIQB87-0.37-0.08-0.24+0.08
50Cody Kessler◦ provisionalJAXQB153-0.26-0.09-0.23+0.06
51Ryan TannehillMIAQB308-0.17-0.09-0.21+0.03
52Mark Sanchez◦ provisionalWASQB42-0.75-0.09-0.27+0.08
53Derek Anderson◦ provisionalBUFQB75-0.51-0.11-0.27+0.06
54Nathan Peterman◦ provisionalBUFQB89-0.52-0.13-0.29+0.03
55Josh RosenARIQB438-0.34-0.23-0.33-0.12

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).