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

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
190
attempts to trust the number
shrunkrawthe shrink90% CI
-5+0+5avg1Russell WilsonSEA · 400+5.32Drew BreesNO · 482+4.93Carson WentzPHI · 396+3.74Deshaun WatsonHOU · 493+3.65Patrick MahomesKC · 561+3.66Matt RyanATL · 595+3.57Ryan FitzpatrickTB · 245+3.38Nick FolesPHI · 193+3.39Derek CarrLV · 529+3.010Philip RiversLAC · 503+2.911Marcus MariotaTEN · 321+2.512Cam NewtonCAR · 454+2.413Kirk CousinsMIN · 592+2.214Chase DanielCHI · 76+1.815Jameis WinstonTB · 373+1.816Mitchell TrubiskyCHI · 426+1.617Cody KesslerJAX · 122+1.618Ben RoethlisbergerPIT · 663+1.519Nick MullensSF · 261+1.520Jared GoffLA · 538+1.421Matt BarkleyBUF · 25+1.322Baker MayfieldCLE · 472+1.223Dak PrescottDAL · 516+1.024Tom BradyNE · 552+1.025Kyle AllenCAR · 31+0.926Andrew LuckIND · 629+0.927Taylor HeinickeCAR · 55+0.828Colt McCoyWAS · 52+0.629Brock OsweilerMIA · 165+0.630Eli ManningNYG · 567+0.6

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

CPOE leaderboard for the 2018 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPosattemptsRawShrunk90% interval
1Russell WilsonSEAQB400+7.5+5.3+2.4+8.3
2Drew BreesNOQB482+6.5+4.9+2.1+7.7
3Carson WentzPHIQB396+5.1+3.7+0.8+6.7
4Deshaun WatsonHOUQB493+4.6+3.6+0.8+6.3
5Patrick MahomesKCQB561+4.5+3.6+1.0+6.2
6Matt RyanATLQB595+4.3+3.5+1.0+6.1
7Ryan FitzpatrickTBQB245+5.2+3.3-0.1+6.8
8Nick FolesPHIQB193+5.7+3.3-0.3+7.0
9Derek CarrLVQB529+3.8+3.0+0.4+5.7
10Philip RiversLACQB503+3.6+2.9+0.1+5.6
11Marcus MariotaTENQB321+3.4+2.5-0.7+5.7
12Cam NewtonCARQB454+3.0+2.4-0.4+5.2
13Kirk CousinsMINQB592+2.6+2.2-0.4+4.7
14Chase Daniel◦ provisionalCHIQB76+4.2+1.8-2.6+6.2
15Jameis WinstonTBQB373+2.2+1.8-1.3+4.8
16Mitchell TrubiskyCHIQB426+2.0+1.6-1.2+4.5
17Cody Kessler◦ provisionalJAXQB122+2.7+1.6-2.5+5.6
18Ben RoethlisbergerPITQB663+1.7+1.5-0.9+4.0
19Nick MullensSFQB261+1.9+1.5-1.9+4.9
20Jared GoffLAQB538+1.5+1.4-1.3+4.0
21Matt Barkley◦ provisionalBUFQB25+4.7+1.3-3.6+6.2
22Baker MayfieldCLEQB472+1.3+1.2-1.6+4.0
23Dak PrescottDALQB516+1.1+1.0-1.6+3.7
24Tom BradyNEQB552+1.0+1.0-1.6+3.6
25Kyle Allen◦ provisionalCARQB31+1.3+0.9-3.9+5.7
26Andrew LuckINDQB629+0.8+0.9-1.6+3.4
27Taylor Heinicke◦ provisionalCARQB55+0.4+0.8-3.8+5.3
28Colt McCoy◦ provisionalWASQB52-0.4+0.6-4.0+5.2
29Brock Osweiler◦ provisionalMIAQB165+0.3+0.6-3.2+4.4
30Eli ManningNYGQB567+0.5+0.6-2.0+3.2
31Ryan TannehillMIAQB267-0.9-0.2-3.5+3.2
32Aaron RodgersGBQB575-0.6-0.2-2.8+2.4
33Derek Anderson◦ provisionalBUFQB69-4.8-0.6-5.1+3.8
34Case KeenumDENQB562-1.3-0.7-3.3+1.9
35Alex SmithWASQB315-1.7-0.7-3.9+2.4
36Josh Johnson◦ provisionalWASQB87-4.9-0.9-5.2+3.4
37Matthew StaffordDETQB544-2.1-1.3-4.0+1.3
38Joe FlaccoBALQB369-2.6-1.4-4.5+1.6
39Mark Sanchez◦ provisionalWASQB34-14.4-1.4-6.2+3.3
40Sam Bradford◦ provisionalARIQB80-7.3-1.5-5.9+2.8
41Jimmy Garoppolo◦ provisionalSFQB87-6.9-1.6-5.9+2.7
42DeShone Kizer◦ provisionalGBQB39-13.7-1.6-6.3+3.1
43Andy DaltonCINQB357-3.0-1.7-4.7+1.4
44Jeff Driskel◦ provisionalCINQB171-4.5-1.7-5.4+2.1
45Blaine Gabbert◦ provisionalTENQB99-8.0-2.2-6.4+2.0
46Lamar Jackson◦ provisionalBALQB164-6.0-2.3-6.1+1.5
47Josh McCown◦ provisionalNYJQB105-9.5-2.8-7.0+1.3
48C.J. Beathard◦ provisionalSFQB167-7.1-2.9-6.6+0.9
49Sam DarnoldNYJQB400-4.6-2.9-5.8+0.1
50Tyrod Taylor◦ provisionalCLEQB82-12.1-3.0-7.4+1.3
51Nathan Peterman◦ provisionalBUFQB79-13.9-3.5-7.8+0.9
52Josh AllenBUFQB303-6.9-3.9-7.1-0.7
53Blake BortlesJAXQB400-6.9-4.4-7.4-1.5
54Josh RosenARIQB371-8.2-5.2-8.2-2.1

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