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 target · 2021

Mean EPA per target, shrunk within position.

Beats raw by
24.4%
lower out-of-sample error
RMSE raw → shrunk
0.38 → 0.29
odd vs. even weeks
Split-half reliability
0.13
how repeatable the raw stat is
Stabilizes at
198
targets to trust the number
shrunkrawthe shrink90% CI
0.00.20.4WR avg1Cooper KuppLA · 192+0.412Mike EvansTB · 114+0.373Mike WilliamsLAC · 130+0.354Ja'Marr ChaseCIN · 128+0.355DeAndre HopkinsARI · 64+0.356Tee HigginsCIN · 111+0.347Justin JeffersonMIN · 170+0.348Henry Ruggs IIILV · 36+0.349Kendrick BourneNE · 70+0.3410Tyler LockettSEA · 108+0.3311Christian KirkARI · 103+0.3312Byron PringleKC · 60+0.3313Allen LazardGB · 60+0.3314Davante AdamsGB · 169+0.3315Deebo Samuel Sr.SF · 121+0.3216Cedrick Wilson Jr.DAL · 62+0.3217Amari CooperDAL · 104+0.3218Amon-Ra St. BrownDET · 121+0.3219Antonio BrownTB · 62+0.3220Brandon AiyukSF · 86+0.3121Cyril GraysonTB · 12+0.3122Tyreek HillKC · 159+0.3123Jalen GuytonLAC · 48+0.3124Tim PatrickDEN · 85+0.3025Quez WatkinsPHI · 63+0.3026Hunter RenfrowLV · 129+0.3027Robert WoodsLA · 70+0.2928Randall CobbGB · 39+0.2929Michael PittmanIND · 130+0.2930T.Y. HiltonIND · 37+0.2931Isaiah McKenzieBUF · 26+0.2932James ProcheBAL · 20+0.2933Laquon TreadwellJAX · 51+0.2934Jauan JenningsSF · 38+0.2835John RossNYG · 20+0.2836Isaiah FordMIA · 17+0.2737Mohamed SanuSF · 24+0.27

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 target · 2021 · full board

EPA per target leaderboard for the 2021 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPostargetsRawShrunk90% interval
1Cooper Kupp◦ provisionalLAWR192+0.59+0.41+0.28+0.55
2Mike Evans◦ provisionalTBWR114+0.58+0.37+0.21+0.52
3Mike Williams◦ provisionalLACWR130+0.51+0.35+0.20+0.50
4Ja'Marr Chase◦ provisionalCINWR128+0.51+0.35+0.20+0.50
5DeAndre Hopkins◦ provisionalARIWR64+0.66+0.35+0.18+0.51
6Tee Higgins◦ provisionalCINWR111+0.52+0.34+0.19+0.50
7Justin Jefferson◦ provisionalMINWR170+0.46+0.34+0.20+0.48
8Henry Ruggs III◦ provisionalLVWR36+0.86+0.34+0.16+0.52
9Kendrick Bourne◦ provisionalNEWR70+0.61+0.34+0.17+0.50
10Tyler Lockett◦ provisionalSEAWR108+0.50+0.33+0.18+0.49
11Christian Kirk◦ provisionalARIWR103+0.50+0.33+0.18+0.49
12Byron Pringle◦ provisionalKCWR60+0.61+0.33+0.16+0.50
13Allen Lazard◦ provisionalGBWR60+0.61+0.33+0.16+0.50
14Davante Adams◦ provisionalGBWR169+0.43+0.33+0.19+0.47
15Deebo Samuel Sr.◦ provisionalSFWR121+0.46+0.32+0.17+0.48
16Cedrick Wilson Jr.◦ provisionalDALWR62+0.58+0.32+0.16+0.49
17Amari Cooper◦ provisionalDALWR104+0.46+0.32+0.16+0.47
18Amon-Ra St. Brown◦ provisionalDETWR121+0.44+0.32+0.17+0.47
19Antonio Brown◦ provisionalTBWR62+0.55+0.32+0.15+0.48
20Brandon Aiyuk◦ provisionalSFWR86+0.47+0.31+0.15+0.47
21Cyril Grayson◦ provisionalTBWR12+1.44+0.31+0.13+0.50
22Tyreek Hill◦ provisionalKCWR159+0.39+0.31+0.17+0.45
23Jalen Guyton◦ provisionalLACWR48+0.56+0.31+0.13+0.48
24Tim Patrick◦ provisionalDENWR85+0.44+0.30+0.14+0.46
25Quez Watkins◦ provisionalPHIWR63+0.49+0.30+0.14+0.47
26Hunter Renfrow◦ provisionalLVWR129+0.39+0.30+0.15+0.45
27Robert Woods◦ provisionalLAWR70+0.44+0.29+0.13+0.46
28Randall Cobb◦ provisionalGBWR39+0.55+0.29+0.12+0.47
29Michael Pittman◦ provisionalINDWR130+0.37+0.29+0.15+0.44
30T.Y. Hilton◦ provisionalINDWR37+0.55+0.29+0.12+0.47
31Isaiah McKenzie◦ provisionalBUFWR26+0.65+0.29+0.11+0.47
32James Proche◦ provisionalBALWR20+0.72+0.29+0.10+0.47
33Laquon Treadwell◦ provisionalJAXWR51+0.45+0.29+0.12+0.46
34Donovan Peoples-Jones◦ provisionalCLEWR59+0.42+0.29+0.12+0.45
35Van Jefferson◦ provisionalLAWR89+0.38+0.28+0.13+0.44
36Jauan Jennings◦ provisionalSFWR38+0.48+0.28+0.11+0.46
37John Ross◦ provisionalNYGWR20+0.61+0.28+0.10+0.46
38Nick Westbrook-Ikhine◦ provisionalTENWR57+0.38+0.27+0.11+0.44
39Isaiah Ford◦ provisionalMIAWR17+0.62+0.27+0.09+0.46
40Josh Reynolds◦ provisionalDETWR49+0.39+0.27+0.10+0.44
41Mohamed Sanu◦ provisionalSFWR24+0.50+0.27+0.09+0.45
42A.J. Brown◦ provisionalTENWR105+0.32+0.27+0.12+0.43
43Marquez Callaway◦ provisionalNOWR84+0.33+0.27+0.11+0.43
44Emmanuel Sanders◦ provisionalBUFWR73+0.34+0.27+0.11+0.43
45Mack Hollins◦ provisionalMIAWR29+0.43+0.27+0.09+0.45
46DeVante Parker◦ provisionalMIAWR73+0.33+0.27+0.10+0.43
47Gabe Davis◦ provisionalBUFWR63+0.33+0.26+0.10+0.43
48Kendall Hinton◦ provisionalDENWR23+0.44+0.26+0.08+0.45
49A.J. Green◦ provisionalARIWR93+0.31+0.26+0.11+0.42
50Quintez Cephus◦ provisionalDETWR23+0.41+0.26+0.08+0.44
51Chris Godwin Jr.◦ provisionalTBWR127+0.28+0.26+0.11+0.41
52Cam Sims◦ provisionalWASWR23+0.39+0.26+0.08+0.44
53Julio Jones◦ provisionalTENWR48+0.32+0.26+0.09+0.43
54Brandon Zylstra◦ provisionalCARWR25+0.37+0.26+0.08+0.44
55DeVonta Smith◦ provisionalPHIWR105+0.28+0.26+0.10+0.41
56Michael Gallup◦ provisionalDALWR62+0.30+0.26+0.09+0.42
57Malik Turner◦ provisionalDALWR16+0.41+0.26+0.07+0.44
58Breshad Perriman◦ provisionalTBWR18+0.39+0.26+0.07+0.44
59DeSean Jackson◦ provisionalLVWR34+0.32+0.26+0.08+0.43
60Chris Moore◦ provisionalHOUWR22+0.36+0.26+0.07+0.44
61Bryan Edwards◦ provisionalLVWR60+0.29+0.25+0.09+0.42
62Freddie Swain◦ provisionalSEAWR41+0.30+0.25+0.08+0.43
63Marquise Goodwin◦ provisionalCHIWR40+0.30+0.25+0.08+0.43
64Chris Conley◦ provisionalHOUWR37+0.29+0.25+0.08+0.43
65Jerry Jeudy◦ provisionalDENWR56+0.28+0.25+0.08+0.42
66Jeff Smith◦ provisionalNYJWR17+0.32+0.25+0.07+0.43
67Adam Thielen◦ provisionalMINWR95+0.25+0.25+0.09+0.40
68Ashton Dulin◦ provisionalINDWR22+0.27+0.25+0.07+0.43
69Equanimeous St. Brown◦ provisionalGBWR17+0.28+0.25+0.06+0.43
70Josh Palmer◦ provisionalLACWR49+0.26+0.25+0.07+0.42
71Kadarius Toney◦ provisionalNYGWR57+0.25+0.25+0.08+0.41
72Lil'Jordan Humphrey◦ provisionalNOWR19+0.26+0.24+0.06+0.43
73Tre'Quan Smith◦ provisionalNOWR51+0.25+0.24+0.07+0.41
74Demarcus Robinson◦ provisionalKCWR41+0.24+0.24+0.07+0.42
75Kalif Raymond◦ provisionalDETWR71+0.24+0.24+0.08+0.41
76Damiere Byrd◦ provisionalCHIWR39+0.23+0.24+0.07+0.42
77DeAndre Carter◦ provisionalWASWR44+0.23+0.24+0.07+0.41
78CeeDee Lamb◦ provisionalDALWR121+0.23+0.24+0.09+0.39
79Olamide Zaccheaus◦ provisionalATLWR54+0.21+0.24+0.07+0.41
80Rashod Bateman◦ provisionalBALWR68+0.22+0.24+0.07+0.40
81Jakeem Grant◦ provisionalCHIWR17+0.14+0.24+0.05+0.42
82Mecole Hardman◦ provisionalKCWR83+0.22+0.24+0.08+0.40
83DK Metcalf◦ provisionalSEAWR129+0.22+0.24+0.09+0.38
84Parris Campbell◦ provisionalINDWR20+0.12+0.23+0.05+0.41
85Marvin Jones◦ provisionalJAXWR120+0.21+0.23+0.08+0.38
86Tyler Boyd◦ provisionalCINWR95+0.20+0.23+0.07+0.39
87Courtland Sutton◦ provisionalDENWR100+0.20+0.23+0.07+0.39
88Marquez Valdes-Scantling◦ provisionalGBWR56+0.18+0.23+0.06+0.40
89Ben Skowronek◦ provisionalLAWR20+0.07+0.23+0.05+0.41
90Devin Duvernay◦ provisionalBALWR47+0.16+0.23+0.06+0.40
91Jamal Agnew◦ provisionalJAXWR40+0.14+0.23+0.05+0.40
92Deonte Harty◦ provisionalNOWR59+0.17+0.23+0.06+0.39
93Tajae Sharpe◦ provisionalATLWR37+0.13+0.23+0.05+0.40
94Calvin Ridley◦ provisionalATLWR52+0.15+0.22+0.05+0.40
95K.J. Osborn◦ provisionalMINWR82+0.18+0.22+0.06+0.39
96Marcus Johnson◦ provisionalTENWR19+0.01+0.22+0.04+0.41
97Phillip Dorsett◦ provisionalHOUWR14-0.06+0.22+0.04+0.41
98Keelan Cole◦ provisionalNYJWR52+0.14+0.22+0.05+0.39
99Keenan Allen◦ provisionalLACWR158+0.19+0.22+0.08+0.36
100Stefon Diggs◦ provisionalBUFWR164+0.20+0.22+0.08+0.36
101Juwann Winfree◦ provisionalGBWR13-0.13+0.22+0.04+0.41
102Brandin Cooks◦ provisionalHOUWR134+0.18+0.22+0.07+0.37
103Allen Robinson◦ provisionalCHIWR67+0.15+0.22+0.05+0.38
104Rashard Higgins◦ provisionalCLEWR47+0.11+0.22+0.05+0.39
105Dede Westbrook◦ provisionalMINWR15-0.13+0.22+0.03+0.40
106Noah Brown◦ provisionalDALWR25+0.01+0.22+0.04+0.40
107Dante Pettis◦ provisionalNYGWR16-0.12+0.22+0.03+0.40
108Tyler Johnson◦ provisionalTBWR56+0.12+0.22+0.05+0.38
109DJ Chark◦ provisionalJAXWR23-0.03+0.22+0.03+0.40
110Penny Hart◦ provisionalSEAWR12-0.26+0.21+0.03+0.40
111Braxton Berrios◦ provisionalNYJWR65+0.12+0.21+0.05+0.38
112Chester Rogers◦ provisionalTENWR43+0.07+0.21+0.04+0.39
113Dyami Brown◦ provisionalWASWR25-0.06+0.21+0.03+0.39
114Dee Eskridge◦ provisionalSEAWR20-0.14+0.21+0.03+0.39
115Danny Amendola◦ provisionalHOUWR39+0.02+0.21+0.03+0.38
116Jakobi Meyers◦ provisionalNEWR128+0.15+0.21+0.06+0.36
117Jamison Crowder◦ provisionalNYJWR73+0.09+0.20+0.04+0.37
118Jaylen Waddle◦ provisionalMIAWR140+0.14+0.20+0.06+0.35
119Zay Jones◦ provisionalLVWR70+0.09+0.20+0.04+0.37
120Odell Beckham Jr.◦ provisionalLAWR83+0.10+0.20+0.04+0.36
121Dax Milne◦ provisionalWASWR14-0.40+0.20+0.02+0.39
122Preston Williams◦ provisionalMIAWR16-0.34+0.20+0.02+0.38
123Sterling Shepard◦ provisionalNYGWR53+0.03+0.20+0.03+0.37
124Nelson Agholor◦ provisionalNEWR64+0.06+0.20+0.03+0.36
125Russell Gage◦ provisionalATLWR94+0.10+0.20+0.04+0.36
126Ty Montgomery◦ provisionalNOWR26-0.17+0.20+0.02+0.38
127Trent Sherfield◦ provisionalSFWR20-0.28+0.20+0.01+0.38
128Antoine Wesley◦ provisionalARIWR32-0.11+0.19+0.02+0.37
129Chase Claypool◦ provisionalPITWR105+0.09+0.19+0.04+0.35
130Rondale Moore◦ provisionalARIWR64+0.02+0.19+0.02+0.36
131Diontae Johnson◦ provisionalPITWR173+0.13+0.19+0.05+0.33
132Denzel Mims◦ provisionalNYJWR23-0.29+0.19+0.01+0.37
133Sammy Watkins◦ provisionalBALWR49-0.04+0.19+0.02+0.36
134Nico Collins◦ provisionalHOUWR60-0.00+0.19+0.02+0.35
135KhaDarel Hodge◦ provisionalDETWR28-0.23+0.19+0.01+0.36
136Jaelon Darden◦ provisionalTBWR12-0.78+0.19-0.00+0.37
137Corey Davis◦ provisionalNYJWR59-0.01+0.18+0.02+0.35
138Terry McLaurin◦ provisionalWASWR130+0.09+0.18+0.04+0.33
139Anthony Schwartz◦ provisionalCLEWR23-0.34+0.18+0.00+0.36
140Albert Wilson◦ provisionalMIAWR39-0.14+0.18+0.01+0.36
141JuJu Smith-Schuster◦ provisionalPITWR28-0.29+0.18-0.00+0.36
142Kenny Stills◦ provisionalNOWR23-0.41+0.18-0.01+0.36
143Terrace Marshall Jr.◦ provisionalCARWR31-0.26+0.18-0.00+0.35
144Anthony Miller◦ provisionalPITWR12-0.95+0.18-0.01+0.36
145Trinity Benson◦ provisionalDETWR22-0.44+0.18-0.01+0.36
146Cole Beasley◦ provisionalBUFWR113+0.05+0.18+0.02+0.33
147Marquise Brown◦ provisionalBALWR147+0.08+0.17+0.03+0.32
148Laviska Shenault Jr.◦ provisionalJAXWR100+0.04+0.17+0.02+0.33
149Elijah Moore◦ provisionalNYJWR78-0.02+0.17+0.01+0.33
150James Washington◦ provisionalPITWR44-0.16+0.17-0.00+0.34
151Josh Gordon◦ provisionalKCWR14-0.89+0.17-0.02+0.35
152Tavon Austin◦ provisionalJAXWR37-0.25+0.17-0.01+0.34
153Collin Johnson◦ provisionalNYGWR21-0.58+0.17-0.02+0.35
154Kenny Golladay◦ provisionalNYGWR77-0.04+0.16+0.00+0.33
155Adam Humphries◦ provisionalWASWR62-0.10+0.16-0.01+0.33
156DJ Moore◦ provisionalCARWR164+0.06+0.16+0.02+0.30
157Jalen Reagor◦ provisionalPHIWR57-0.19+0.15-0.02+0.32
158Darnell Mooney◦ provisionalCHIWR141+0.00+0.14-0.00+0.29
159Darius Slayton◦ provisionalNYGWR58-0.25+0.13-0.04+0.30
160Zach Pascal◦ provisionalINDWR69-0.19+0.13-0.03+0.30
161Ray-Ray McCloud◦ provisionalPITWR66-0.22+0.13-0.04+0.29
162Jarvis Landry◦ provisionalCLEWR87-0.15+0.12-0.04+0.28
163Robbie Chosen◦ provisionalCARWR110-0.26+0.06-0.09+0.22

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