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

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
222
dropbacks to trust the number
shrunkrawthe shrink90% CI
-0.20.00.2avg1Tom BradyNE · 448+0.242Matt RyanATL · 575+0.233Dak PrescottDAL · 484+0.194Aaron RodgersGB · 645+0.175Kirk CousinsWAS · 628+0.156Jimmy GaroppoloNE · 66+0.147Matt MooreMIA · 87+0.148Drew BreesNO · 695+0.149Ben RoethlisbergerPIT · 532+0.1310Derek CarrLV · 580+0.1211Brian HoyerCHI · 202+0.1212Matthew StaffordDET · 630+0.1013Marcus MariotaTEN · 475+0.1014Andy DaltonCIN · 602+0.1015Andrew LuckIND · 586+0.0916Jameis WinstonTB · 607+0.0817Cody KesslerCLE · 217+0.0818Russell WilsonSEA · 587+0.0819Alex SmithKC · 518+0.0820Shaun HillMIN · 36+0.0821Philip RiversLAC · 615+0.0822Tyrod TaylorBUF · 478+0.0723Landry JonesPIT · 89+0.0624Charlie WhitehurstCLE · 27+0.0625Sam BradfordMIN · 590+0.0626Carson PalmerARI · 639+0.0627Derek AndersonCAR · 54+0.0528Trevor SiemianDEN · 518+0.0429Ryan TannehillMIA · 418+0.0430EJ ManuelBUF · 30+0.0331Matt BarkleyCHI · 222+0.0332Carson WentzPHI · 641+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 · 2016 · full board

EPA per dropback leaderboard for the 2016 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPosdropbacksRawShrunk90% interval
1Tom BradyNEQB448+0.33+0.24+0.14+0.34
2Matt RyanATLQB575+0.30+0.23+0.14+0.32
3Dak PrescottDALQB484+0.25+0.19+0.10+0.29
4Aaron RodgersGBQB645+0.20+0.17+0.08+0.25
5Kirk CousinsWASQB628+0.18+0.15+0.06+0.24
6Jimmy Garoppolo◦ provisionalNEQB66+0.42+0.14-0.00+0.29
7Matt Moore◦ provisionalMIAQB87+0.34+0.14-0.00+0.29
8Drew BreesNOQB695+0.16+0.14+0.05+0.22
9Ben RoethlisbergerPITQB532+0.16+0.13+0.04+0.22
10Derek CarrLVQB580+0.14+0.12+0.03+0.21
11Brian Hoyer◦ provisionalCHIQB202+0.17+0.12-0.01+0.24
12Matthew StaffordDETQB630+0.12+0.10+0.02+0.19
13Marcus MariotaTENQB475+0.12+0.10+0.01+0.20
14Andy DaltonCINQB602+0.11+0.10+0.01+0.18
15Andrew LuckINDQB586+0.10+0.09+0.00+0.18
16Jameis WinstonTBQB607+0.09+0.08-0.01+0.17
17Cody Kessler◦ provisionalCLEQB217+0.10+0.08-0.04+0.20
18Russell WilsonSEAQB587+0.09+0.08-0.01+0.17
19Alex SmithKCQB518+0.09+0.08-0.01+0.17
20Shaun Hill◦ provisionalMINQB36+0.17+0.08-0.08+0.24
21Philip RiversLACQB615+0.08+0.08-0.01+0.16
22Tyrod TaylorBUFQB478+0.07+0.07-0.03+0.16
23Landry Jones◦ provisionalPITQB89+0.06+0.06-0.08+0.21
24Charlie Whitehurst◦ provisionalCLEQB27+0.06+0.06-0.10+0.22
25Sam BradfordMINQB590+0.06+0.06-0.03+0.15
26Carson PalmerARIQB639+0.05+0.06-0.03+0.14
27Derek Anderson◦ provisionalCARQB54-0.03+0.05-0.11+0.20
28Trevor SiemianDENQB518+0.03+0.04-0.05+0.14
29Ryan TannehillMIAQB418+0.03+0.04-0.06+0.14
30EJ Manuel◦ provisionalBUFQB30-0.19+0.03-0.13+0.19
31Paxton Lynch◦ provisionalDENQB91-0.05+0.03-0.11+0.17
32Matt Barkley◦ provisionalCHIQB222-0.01+0.03-0.09+0.15
33Nick Foles◦ provisionalKCQB59-0.11+0.03-0.12+0.18
34Kevin Hogan◦ provisionalCLEQB28-0.27+0.03-0.13+0.19
35Carson WentzPHIQB641+0.01+0.03-0.06+0.11
36Scott Tolzien◦ provisionalINDQB40-0.21+0.02-0.13+0.18
37Jacoby Brissett◦ provisionalNEQB61-0.15+0.02-0.13+0.17
38Matt Cassel◦ provisionalTENQB54-0.19+0.01-0.14+0.17
39Eli ManningNYGQB619-0.01+0.01-0.08+0.10
40Tom Savage◦ provisionalHOUQB78-0.14+0.01-0.14+0.16
41Colin KaepernickSFQB366-0.02+0.01-0.10+0.11
42Drew Stanton◦ provisionalARIQB48-0.27+0.00-0.15+0.16
43Ryan FitzpatrickNYJQB422-0.04-0.01-0.11+0.09
44Joe FlaccoBALQB703-0.03-0.01-0.09+0.07
45Cam NewtonCARQB547-0.05-0.01-0.11+0.08
46Robert Griffin III◦ provisionalCLEQB169-0.13-0.02-0.15+0.11
47Josh McCown◦ provisionalCLEQB183-0.14-0.03-0.15+0.10
48Jay Cutler◦ provisionalCHIQB154-0.17-0.03-0.16+0.10
49Case KeenumLAQB345-0.10-0.04-0.14+0.07
50Blake BortlesJAXQB660-0.07-0.04-0.12+0.05
51Brock OsweilerHOUQB534-0.09-0.04-0.13+0.05
52Blaine Gabbert◦ provisionalSFQB171-0.19-0.05-0.18+0.08
53Bryce Petty◦ provisionalNYJQB146-0.24-0.06-0.19+0.07
54Jared GoffLAQB230-0.38-0.16-0.28-0.04

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