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.

CPOE · 2021

Completion % over expected (accounts for depth & situation).

Beats raw by
17.9%
lower out-of-sample error
RMSE raw → shrunk
4.9 → 4.0
odd vs. even weeks
Split-half reliability
0.35
how repeatable the raw stat is
Stabilizes at
258
attempts to trust the number
shrunkrawthe shrink90% CI
-5+0+5avg1Joe BurrowCIN · 506+4.52Aaron RodgersGB · 510+3.93Kyler MurrayARI · 461+2.84Teddy BridgewaterDEN · 405+2.55Russell WilsonSEA · 386+2.06Patrick MahomesKC · 620+2.07Geno SmithSEA · 88+1.98Jimmy GaroppoloSF · 426+1.79Dak PrescottDAL · 586+1.710Mac JonesNE · 511+1.711Ryan TannehillTEN · 519+1.712Derek CarrLV · 601+1.613Josh AllenBUF · 614+1.614Tom BradyTB · 704+1.315Matt RyanATL · 542+1.316Tua TagovailoaMIA · 380+1.317Colt McCoyARI · 98+1.218Kirk CousinsMIN · 537+1.019Joe FlaccoNYJ · 38+0.920Gardner MinshewPHI · 57+0.821Nick MullensCLE · 29+0.722Nick FolesCHI · 35+0.523Lamar JacksonBAL · 371+0.524Jared GoffDET · 467+0.525Josh JohnsonBAL · 82+0.426Garrett GilbertWAS · 30+0.327Taylor HeinickeWAS · 480+0.328Jalen HurtsPHI · 409+0.229Case KeenumCLE · 70+0.130Matthew StaffordLA · 596+0.031Davis MillsHOU · 378-0.0

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.

CPOE · 2021 · full board

CPOE leaderboard for the 2021 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPosattemptsRawShrunk90% interval
1Joe BurrowCINQB506+6.6+4.5+1.9+7.1
2Aaron RodgersGBQB510+5.8+3.9+1.3+6.5
3Kyler MurrayARIQB461+4.2+2.8+0.1+5.5
4Teddy BridgewaterDENQB405+3.9+2.5-0.3+5.3
5Russell WilsonSEAQB386+3.2+2.0-0.8+4.8
6Patrick MahomesKCQB620+2.7+2.0-0.4+4.4
7Geno Smith◦ provisionalSEAQB88+6.5+1.9-2.0+5.7
8Jimmy GaroppoloSFQB426+2.6+1.7-1.0+4.5
9Dak PrescottDALQB586+2.3+1.7-0.8+4.2
10Mac JonesNEQB511+2.4+1.7-0.9+4.3
11Ryan TannehillTENQB519+2.4+1.7-0.9+4.2
12Derek CarrLVQB601+2.2+1.6-0.8+4.1
13Josh AllenBUFQB614+2.1+1.6-0.9+4.0
14Tom BradyTBQB704+1.7+1.3-1.0+3.6
15Matt RyanATLQB542+1.8+1.3-1.3+3.8
16Tua TagovailoaMIAQB380+1.9+1.3-1.6+4.1
17Colt McCoy◦ provisionalARIQB98+3.5+1.2-2.6+5.0
18Kirk CousinsMINQB537+1.4+1.0-1.5+3.5
19Joe Flacco◦ provisionalNYJQB38+5.4+0.9-3.2+5.1
20Gardner Minshew◦ provisionalPHIQB57+3.2+0.8-3.2+4.8
21Nick Mullens◦ provisionalCLEQB29+4.7+0.7-3.5+5.0
22Nick Foles◦ provisionalCHIQB35+2.5+0.5-3.6+4.7
23Lamar JacksonBALQB371+0.7+0.5-2.3+3.4
24Jared GoffDETQB467+0.6+0.5-2.2+3.1
25Josh Johnson◦ provisionalBALQB82+0.6+0.4-3.5+4.2
26Garrett Gilbert◦ provisionalWASQB30+0.8+0.3-3.9+4.5
27Taylor HeinickeWASQB480+0.3+0.3-2.3+2.9
28Jalen HurtsPHIQB409+0.1+0.2-2.6+2.9
29Case Keenum◦ provisionalCLEQB70-0.7+0.1-3.9+4.0
30Matthew StaffordLAQB596-0.1+0.0-2.4+2.5
31Davis MillsHOUQB378-0.2-0.0-2.9+2.8
32Tyler Huntley◦ provisionalBALQB182-1.1-0.3-3.7+3.1
33Cooper Rush◦ provisionalDALQB47-3.5-0.3-4.4+3.8
34Justin HerbertLACQB657-0.6-0.4-2.7+2.0
35Daniel JonesNYGQB347-0.8-0.4-3.3+2.5
36Sean Mannion◦ provisionalMINQB34-5.4-0.4-4.6+3.8
37Mike White◦ provisionalNYJQB131-2.1-0.5-4.2+3.1
38Trey Lance◦ provisionalSFQB69-4.1-0.7-4.6+3.3
39Tim Boyle◦ provisionalDETQB93-3.5-0.7-4.5+3.1
40Drew Lock◦ provisionalDENQB109-3.3-0.8-4.5+2.9
41Jordan Love◦ provisionalGBQB60-5.5-0.8-4.8+3.2
42Justin FieldsCHIQB261-2.0-0.8-4.0+2.3
43Jacoby Brissett◦ provisionalMIAQB217-2.2-0.9-4.1+2.4
44Mason Rudolph◦ provisionalPITQB56-6.1-0.9-4.9+3.2
45Jameis Winston◦ provisionalNOQB153-3.1-1.0-4.5+2.5
46Tyrod Taylor◦ provisionalHOUQB144-3.6-1.1-4.7+2.4
47Carson WentzINDQB497-2.1-1.3-3.9+1.3
48Baker MayfieldCLEQB400-2.7-1.5-4.3+1.2
49Ben RoethlisbergerPITQB596-2.4-1.6-4.0+0.9
50PJ Walker◦ provisionalCARQB65-9.2-1.6-5.6+2.4
51Brandon Allen◦ provisionalCINQB33-17.4-1.7-5.9+2.5
52Trevor Siemian◦ provisionalNOQB175-4.7-1.7-5.2+1.7
53Andy Dalton◦ provisionalCHIQB227-4.2-1.8-5.1+1.4
54Mike Glennon◦ provisionalNYGQB154-7.9-2.8-6.3+0.8
55Sam DarnoldCARQB384-4.9-2.8-5.6+0.0
56Jake Fromm◦ provisionalNYGQB58-18.5-3.2-7.2+0.8
57Trevor LawrenceJAXQB581-4.8-3.2-5.7-0.8
58Cam Newton◦ provisionalCARQB124-12.6-3.9-7.6-0.3
59Zach WilsonNYJQB366-9.6-5.5-8.4-2.7

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