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

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
908
attempts to trust the number
shrunkrawthe shrink90% CI
-4-2+0+2+4avg1Geno SmithSEA · 552+2.22Patrick MahomesKC · 611+1.53Joe BurrowCIN · 590+1.14Jalen HurtsPHI · 435+0.95Jacoby BrissettCLE · 351+0.96Daniel JonesNYG · 443+0.87Sam DarnoldCAR · 119+0.68Justin HerbertLAC · 675+0.69Trevor LawrenceJAX · 562+0.610Bailey ZappeNE · 88+0.611Kirk CousinsMIN · 612+0.612Nick MullensMIN · 25+0.513Tua TagovailoaMIA · 387+0.514Josh AllenBUF · 544+0.415Taylor HeinickeWAS · 243+0.416Tyler HuntleyBAL · 107+0.417Jameis WinstonNO · 111+0.418Mitchell TrubiskyPIT · 177+0.319Kenny PickettPIT · 369+0.320Tom BradyTB · 707+0.321Aaron RodgersGB · 520+0.222Andy DaltonNO · 364+0.223Ryan TannehillTEN · 317+0.224Jarrett StidhamLV · 79+0.225Teddy BridgewaterMIA · 75+0.226David BloughARI · 56+0.127Dak PrescottDAL · 388+0.128Matthew StaffordLA · 296+0.029Colt McCoyARI · 129+0.030Matt RyanIND · 439+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 · 2022 · full board

CPOE leaderboard for the 2022 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPosattemptsRawShrunk90% interval
1Geno Smith◦ provisionalSEAQB552+5.6+2.2+0.3+4.0
2Patrick Mahomes◦ provisionalKCQB611+3.6+1.5-0.4+3.3
3Joe Burrow◦ provisionalCINQB590+2.7+1.1-0.7+3.0
4Jalen Hurts◦ provisionalPHIQB435+2.7+0.9-1.0+2.9
5Jacoby Brissett◦ provisionalCLEQB351+2.9+0.9-1.2+2.9
6Daniel Jones◦ provisionalNYGQB443+2.3+0.8-1.2+2.8
7Sam Darnold◦ provisionalCARQB119+4.9+0.6-1.6+2.9
8Justin Herbert◦ provisionalLACQB675+1.3+0.6-1.2+2.4
9Trevor Lawrence◦ provisionalJAXQB562+1.4+0.6-1.3+2.5
10Bailey Zappe◦ provisionalNEQB88+5.8+0.6-1.7+2.8
11Kirk Cousins◦ provisionalMINQB612+1.3+0.6-1.3+2.4
12Nick Mullens◦ provisionalMINQB25+15.5+0.5-1.9+2.8
13Tua Tagovailoa◦ provisionalMIAQB387+1.4+0.5-1.5+2.5
14Josh Allen◦ provisionalBUFQB544+1.0+0.4-1.5+2.3
15Taylor Heinicke◦ provisionalWASQB243+1.7+0.4-1.7+2.5
16Tyler Huntley◦ provisionalBALQB107+3.2+0.4-1.9+2.7
17Jameis Winston◦ provisionalNOQB111+2.7+0.4-1.9+2.6
18Mitchell Trubisky◦ provisionalPITQB177+1.6+0.3-1.9+2.5
19Kenny Pickett◦ provisionalPITQB369+0.8+0.3-1.7+2.3
20Tom Brady◦ provisionalTBQB707+0.5+0.3-1.5+2.0
21Aaron Rodgers◦ provisionalGBQB520+0.5+0.2-1.7+2.1
22Andy Dalton◦ provisionalNOQB364+0.6+0.2-1.8+2.2
23Ryan Tannehill◦ provisionalTENQB317+0.5+0.2-1.9+2.2
24Jarrett Stidham◦ provisionalLVQB79+1.5+0.2-2.1+2.5
25Teddy Bridgewater◦ provisionalMIAQB75+1.6+0.2-2.1+2.5
26David Blough◦ provisionalARIQB56+0.6+0.1-2.2+2.4
27Dak Prescott◦ provisionalDALQB388+0.0+0.1-1.9+2.0
28Matthew Stafford◦ provisionalLAQB296-0.0+0.0-2.0+2.1
29Colt McCoy◦ provisionalARIQB129-0.3+0.0-2.2+2.3
30Matt Ryan◦ provisionalINDQB439-0.1+0.0-2.0+2.0
31Joshua Dobbs◦ provisionalTENQB65-1.6-0.0-2.4+2.3
32Brock Purdy◦ provisionalSFQB166-0.7-0.1-2.3+2.1
33Gardner Minshew◦ provisionalPHIQB70-1.8-0.1-2.4+2.2
34Desmond Ridder◦ provisionalATLQB110-1.3-0.1-2.3+2.2
35Trevor Siemian◦ provisionalCHIQB25-5.8-0.1-2.4+2.3
36Mac Jones◦ provisionalNEQB424-0.4-0.1-2.1+1.9
37Marcus Mariota◦ provisionalATLQB290-0.6-0.1-2.2+2.0
38Lamar Jackson◦ provisionalBALQB309-0.6-0.1-2.2+2.0
39Kyler Murray◦ provisionalARIQB372-0.8-0.2-2.2+1.8
40Jimmy Garoppolo◦ provisionalSFQB306-1.0-0.2-2.3+1.8
41Davis Webb◦ provisionalNYGQB38-7.0-0.2-2.6+2.1
42Brett Rypien◦ provisionalDENQB87-3.7-0.3-2.5+2.0
43Sam Ehlinger◦ provisionalINDQB99-3.5-0.3-2.6+2.0
44Nick Foles◦ provisionalINDQB41-8.2-0.3-2.6+2.0
45John Wolford◦ provisionalLAQB61-5.7-0.3-2.6+2.0
46Russell Wilson◦ provisionalDENQB454-1.2-0.3-2.3+1.6
47Bryce Perkins◦ provisionalLAQB33-11.8-0.4-2.7+2.0
48Deshaun Watson◦ provisionalCLEQB155-3.3-0.4-2.6+1.8
49Trey Lance◦ provisionalSFQB29-16.5-0.5-2.8+1.9
50Skylar Thompson◦ provisionalMIAQB100-5.2-0.5-2.7+1.8
51Malik Willis◦ provisionalTENQB52-10.6-0.5-2.8+1.8
52Jared Goff◦ provisionalDETQB562-1.5-0.5-2.4+1.3
53Justin Fields◦ provisionalCHIQB303-2.5-0.6-2.6+1.5
54Joe Flacco◦ provisionalNYJQB182-4.1-0.6-2.8+1.5
55Kyle Allen◦ provisionalHOUQB75-9.1-0.6-2.9+1.7
56PJ Walker◦ provisionalCARQB105-7.6-0.7-3.0+1.5
57Trace McSorley◦ provisionalARIQB77-10.6-0.8-3.1+1.5
58Carson Wentz◦ provisionalWASQB270-3.8-0.8-2.9+1.3
59Anthony Brown◦ provisionalBALQB47-19.3-0.9-3.2+1.4
60Mike White◦ provisionalNYJQB169-6.2-0.9-3.1+1.3
61Derek Carr◦ provisionalLVQB478-2.9-0.9-2.9+1.0
62Cooper Rush◦ provisionalDALQB157-6.8-1.0-3.2+1.2
63Zach Wilson◦ provisionalNYJQB221-5.6-1.0-3.2+1.1
64Davis Mills◦ provisionalHOUQB463-3.8-1.2-3.2+0.7
65Baker Mayfield◦ provisionalLAQB322-7.0-1.8-3.8+0.3

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