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

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
274
dropbacks to trust the number
shrunkrawthe shrink90% CI
-0.20.00.2avg1Lamar JacksonBAL · 423+0.232Patrick MahomesKC · 502+0.203Drew BreesNO · 386+0.174Dak PrescottDAL · 620+0.165Matthew StaffordDET · 308+0.156Derek CarrLV · 541+0.147Kirk CousinsMIN · 475+0.148Ryan TannehillTEN · 315+0.139Russell WilsonSEA · 563+0.1210Jimmy GaroppoloSF · 514+0.1211Matt SchaubATL · 70+0.1212Deshaun WatsonHOU · 538+0.1113Philip RiversLAC · 623+0.0914Aaron RodgersGB · 606+0.0915Jared GoffLA · 649+0.0816Teddy BridgewaterNO · 208+0.0817Drew LockDEN · 161+0.0718Carson WentzPHI · 646+0.0619Jameis WinstonTB · 674+0.0620Matt MooreKC · 98+0.0621Chase DanielCHI · 71+0.0622Tom BradyNE · 642+0.0523Robert Griffin IIIBAL · 43+0.0524Ryan FitzpatrickMIA · 543+0.0525Jacoby BrissettIND · 472+0.0426Matt RyanATL · 668+0.0427Kyler MurrayARI · 589+0.0328AJ McCarronHOU · 42+0.0229Cam NewtonCAR · 94+0.0230Eli ManningNYG · 152+0.0231Case KeenumWAS · 262+0.0232Baker MayfieldCLE · 575+0.0133Josh AllenBUF · 498+0.01

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

EPA per dropback leaderboard for the 2019 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPosdropbacksRawShrunk90% interval
1Lamar JacksonBALQB423+0.34+0.23+0.13+0.33
2Patrick MahomesKCQB502+0.28+0.20+0.11+0.29
3Drew BreesNOQB386+0.24+0.17+0.06+0.27
4Dak PrescottDALQB620+0.20+0.16+0.07+0.24
5Matthew StaffordDETQB308+0.22+0.15+0.04+0.25
6Derek CarrLVQB541+0.18+0.14+0.05+0.23
7Kirk CousinsMINQB475+0.18+0.14+0.04+0.23
8Ryan TannehillTENQB315+0.20+0.13+0.03+0.24
9Russell WilsonSEAQB563+0.16+0.12+0.03+0.21
10Jimmy GaroppoloSFQB514+0.16+0.12+0.03+0.22
11Matt Schaub◦ provisionalATLQB70+0.38+0.12-0.02+0.26
12Deshaun WatsonHOUQB538+0.14+0.11+0.02+0.21
13Philip RiversLACQB623+0.11+0.09+0.01+0.18
14Aaron RodgersGBQB606+0.10+0.09-0.00+0.17
15Jared GoffLAQB649+0.09+0.08-0.00+0.17
16Teddy Bridgewater◦ provisionalNOQB208+0.12+0.08-0.04+0.20
17Drew Lock◦ provisionalDENQB161+0.09+0.07-0.06+0.19
18Carson WentzPHIQB646+0.07+0.06-0.02+0.15
19Jameis WinstonTBQB674+0.07+0.06-0.02+0.15
20Matt Moore◦ provisionalKCQB98+0.07+0.06-0.07+0.20
21Chase Daniel◦ provisionalCHIQB71+0.07+0.06-0.08+0.20
22Tom BradyNEQB642+0.05+0.05-0.03+0.14
23Robert Griffin III◦ provisionalBALQB43-0.01+0.05-0.10+0.20
24Ryan FitzpatrickMIAQB543+0.04+0.05-0.04+0.14
25Jacoby BrissettINDQB472+0.03+0.04-0.06+0.13
26Matt RyanATLQB668+0.03+0.04-0.05+0.12
27Kyler MurrayARIQB589+0.01+0.03-0.06+0.11
28AJ McCarron◦ provisionalHOUQB42-0.20+0.02-0.12+0.17
29Cam Newton◦ provisionalCARQB94-0.08+0.02-0.11+0.16
30Eli Manning◦ provisionalNYGQB152-0.05+0.02-0.11+0.15
31Case Keenum◦ provisionalWASQB262-0.02+0.02-0.09+0.13
32Marcus Mariota◦ provisionalTENQB183-0.04+0.02-0.10+0.14
33Matt Barkley◦ provisionalBUFQB52-0.18+0.02-0.13+0.16
34Jeff Driskel◦ provisionalDETQB115-0.08+0.02-0.12+0.15
35Ben Roethlisberger◦ provisionalPITQB64-0.21+0.01-0.13+0.15
36Baker MayfieldCLEQB575-0.02+0.01-0.08+0.10
37Josh AllenBUFQB498-0.02+0.01-0.09+0.10
38Gardner MinshewJAXQB507-0.02+0.00-0.09+0.10
39Sam DarnoldNYJQB475-0.03+0.00-0.09+0.10
40Andy DaltonCINQB560-0.03+0.00-0.09+0.09
41Nick Foles◦ provisionalJAXQB128-0.13-0.00-0.13+0.13
42Mason RudolphPITQB299-0.06-0.00-0.11+0.10
43Joe FlaccoDENQB288-0.08-0.01-0.12+0.10
44Devlin Hodges◦ provisionalPITQB175-0.13-0.01-0.14+0.11
45Brandon Allen◦ provisionalDENQB93-0.23-0.02-0.15+0.12
46Kyle AllenCARQB536-0.06-0.02-0.11+0.07
47Colt McCoy◦ provisionalWASQB33-0.67-0.02-0.17+0.13
48Mitchell TrubiskyCHIQB552-0.06-0.02-0.11+0.07
49Daniel JonesNYGQB500-0.08-0.03-0.13+0.06
50Brian Hoyer◦ provisionalINDQB71-0.38-0.03-0.17+0.11
51Will Grier◦ provisionalCARQB58-0.49-0.04-0.18+0.11
52David Blough◦ provisionalDETQB188-0.23-0.06-0.18+0.06
53Dwayne Haskins◦ provisionalWASQB234-0.22-0.07-0.19+0.05
54Josh Rosen◦ provisionalMIAQB125-0.40-0.08-0.21+0.05
55Ryan Finley◦ provisionalCINQB98-0.54-0.10-0.23+0.04
56Luke Falk◦ provisionalNYJQB90-0.62-0.11-0.25+0.03

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