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

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
196
dropbacks to trust the number
shrunkrawthe shrink90% CI
-0.20.00.2avg1Drake MayeNE · 540+0.242Matthew StaffordLA · 617+0.203Jordan LoveGB · 461+0.184Malik WillisGB · 38+0.165Mitchell TrubiskyBUF · 37+0.156Dak PrescottDAL · 631+0.157Brock PurdySF · 298+0.158Jared GoffDET · 614+0.149Daniel JonesIND · 409+0.1210Sam DarnoldSEA · 502+0.1211Josh AllenBUF · 506+0.1112Mac JonesSF · 304+0.1113Patrick MahomesKC · 537+0.1114Joe BurrowCIN · 278+0.1015Jameis WinstonNYG · 69+0.0916C.J. StroudHOU · 446+0.0917Bo NixDEN · 638+0.0918Caleb WilliamsCHI · 594+0.0619Jalen HurtsPHI · 486+0.0620Trevor LawrenceJAX · 600+0.0621Tyler HuntleyBAL · 74+0.0522Josh JohnsonWAS · 54+0.0523Lamar JacksonBAL · 338+0.0524Aaron RodgersPIT · 527+0.0525Mason RudolphPIT · 54+0.0526Carson WentzMIN · 188+0.0427Kyler MurrayARI · 177+0.0428Tua TagovailoaMIA · 415+0.0429Justin HerbertLAC · 566+0.0330Michael Penix Jr.ATL · 290+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 · 2025 · full board

EPA per dropback leaderboard for the 2025 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPosdropbacksRawShrunk90% interval
1Drake MayeNEQB540+0.31+0.24+0.14+0.33
2Matthew StaffordLAQB617+0.24+0.20+0.11+0.29
3Jordan LoveGBQB461+0.24+0.18+0.08+0.28
4Malik Willis◦ provisionalGBQB38+0.74+0.16-0.01+0.33
5Mitchell Trubisky◦ provisionalBUFQB37+0.70+0.15-0.02+0.32
6Dak PrescottDALQB631+0.18+0.15+0.06+0.24
7Brock PurdySFQB298+0.21+0.15+0.03+0.26
8Jared GoffDETQB614+0.17+0.14+0.05+0.23
9Daniel JonesINDQB409+0.16+0.12+0.02+0.23
10Sam DarnoldSEAQB502+0.15+0.12+0.02+0.22
11Josh AllenBUFQB506+0.14+0.11+0.02+0.21
12Mac JonesSFQB304+0.15+0.11-0.01+0.22
13Patrick MahomesKCQB537+0.13+0.11+0.01+0.20
14Joe BurrowCINQB278+0.13+0.10-0.02+0.21
15Jameis Winston◦ provisionalNYGQB69+0.22+0.09-0.07+0.25
16C.J. StroudHOUQB446+0.11+0.09-0.01+0.19
17Bo NixDENQB638+0.10+0.09-0.00+0.18
18Caleb WilliamsCHIQB594+0.07+0.06-0.03+0.16
19Jalen HurtsPHIQB486+0.07+0.06-0.04+0.16
20Trevor LawrenceJAXQB600+0.06+0.06-0.03+0.15
21Tyler Huntley◦ provisionalBALQB74+0.08+0.05-0.10+0.21
22Josh Johnson◦ provisionalWASQB54+0.08+0.05-0.11+0.22
23Lamar JacksonBALQB338+0.05+0.05-0.06+0.16
24Aaron RodgersPITQB527+0.05+0.05-0.05+0.15
25Mason Rudolph◦ provisionalPITQB54+0.05+0.05-0.12+0.21
26Carson Wentz◦ provisionalMINQB188+0.03+0.04-0.09+0.17
27Kyler Murray◦ provisionalARIQB177+0.03+0.04-0.10+0.17
28Tua TagovailoaMIAQB415+0.03+0.04-0.07+0.14
29Justin HerbertLACQB566+0.03+0.03-0.06+0.13
30Michael Penix Jr.ATLQB290+0.02+0.03-0.09+0.15
31Tanner McKee◦ provisionalPHIQB46-0.05+0.03-0.14+0.19
32Quinn Ewers◦ provisionalMIAQB91-0.02+0.02-0.13+0.18
33Jaxson DartNYGQB375+0.01+0.02-0.09+0.13
34Tyler ShoughNOQB356+0.01+0.02-0.09+0.13
35Marcus MariotaWASQB244-0.01+0.02-0.11+0.14
36Kirk CousinsATLQB281-0.01+0.01-0.10+0.13
37Andy Dalton◦ provisionalCARQB45-0.13+0.01-0.15+0.18
38Baker MayfieldTBQB584+0.00+0.01-0.08+0.10
39Jayden DanielsWASQB205-0.02+0.01-0.12+0.14
40Jacoby BrissettARIQB530-0.01+0.01-0.09+0.10
41Riley Leonard◦ provisionalINDQB70-0.12+0.00-0.16+0.16
42Philip Rivers◦ provisionalINDQB97-0.12-0.01-0.16+0.14
43Tyrod Taylor◦ provisionalNYJQB147-0.09-0.01-0.15+0.13
44Bryce YoungCARQB506-0.04-0.02-0.12+0.08
45Russell Wilson◦ provisionalNYGQB129-0.12-0.02-0.16+0.12
46Davis Mills◦ provisionalHOUQB169-0.10-0.02-0.16+0.11
47Spencer RattlerNOQB272-0.08-0.03-0.15+0.09
48Justin FieldsNYJQB233-0.09-0.03-0.16+0.09
49Cooper Rush◦ provisionalBALQB53-0.36-0.04-0.20+0.12
50Joe FlaccoCINQB432-0.10-0.05-0.15+0.05
51Brandon Allen◦ provisionalTENQB31-0.78-0.07-0.24+0.10
52Kenny Pickett◦ provisionalLVQB52-0.55-0.08-0.24+0.08
53Chris Oladokun◦ provisionalKCQB62-0.48-0.08-0.24+0.08
54Jake Browning◦ provisionalCINQB134-0.29-0.09-0.23+0.05
55Dillon GabrielCLEQB204-0.22-0.09-0.22+0.04
56Geno SmithLVQB503-0.15-0.09-0.19+0.01
57J.J. McCarthyMINQB273-0.20-0.10-0.22+0.02
58Trey Lance◦ provisionalLACQB59-0.65-0.12-0.28+0.05
59Shedeur SandersCLEQB235-0.25-0.12-0.24+0.01
60Cam WardTENQB592-0.18-0.13-0.22-0.04
61Brady Cook◦ provisionalNYJQB173-0.40-0.16-0.30-0.03
62Max Brosmer◦ provisionalMINQB85-0.67-0.17-0.32-0.02

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