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

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
159 TE · 127 WR
targets to trust the number
shrunkrawthe shrink90% CI
-0.20.00.20.40.6TE avgWR avg1Brandon AiyukSF · 105+0.482CeeDee LambDAL · 182+0.433Nico CollinsHOU · 110+0.434Khalil ShakirBUF · 46+0.425Tyreek HillMIA · 172+0.406George KittleSF · 90+0.367DJ MooreCHI · 138+0.358Kalif RaymondDET · 44+0.359Amon-Ra St. BrownDET · 165+0.3410Adam ThielenCAR · 138+0.3411Puka NacuaLA · 160+0.3412A.J. BrownPHI · 158+0.3313A.T. PerryNO · 18+0.3314Ja'Marr ChaseCIN · 145+0.3315Jaylen WaddleMIA · 104+0.3216Keenan AllenLAC · 150+0.3217Deebo Samuel Sr.SF · 89+0.3218Brandon JohnsonDEN · 31+0.3219Isaiah LikelyBAL · 40+0.3220Justin JeffersonMIN · 100+0.3221Mike EvansTB · 137+0.3222Dontayvion WicksGB · 58+0.3123Brandin CooksDAL · 82+0.3124Trenton IrwinCIN · 32+0.3025Rashee RiceKC · 102+0.3026Lil'Jordan Humphr…DEN · 19+0.3027Amari CooperCLE · 130+0.2928Chris MooreTEN · 35+0.2929DK MetcalfSEA · 119+0.2930Tank DellHOU · 76+0.2931Mark AndrewsBAL · 61+0.2932Nick Westbrook-Ik…TEN · 46+0.2933KaVontae TurpinDAL · 18+0.2834Mike WilliamsLAC · 26+0.2735Olamide ZaccheausPHI · 20+0.2736Brevin JordanHOU · 21+0.2737Scott MillerATL · 16+0.2638Durham SmytheMIA · 43+0.2639Ronnie BellSF · 13+0.2640River CracraftMIA · 12+0.2541Elijah HigginsARI · 19+0.2342Will MalloryIND · 26+0.2343MyCole PruittATL · 12+0.2344Luke FarrellJAX · 15+0.22

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

EPA per target leaderboard for the 2023 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPostargetsRawShrunk90% interval
1Brandon Aiyuk◦ provisionalSFWR105+0.78+0.48+0.30+0.66
2CeeDee LambDALWR182+0.57+0.43+0.27+0.59
3Nico Collins◦ provisionalHOUWR110+0.66+0.43+0.25+0.61
4Khalil Shakir◦ provisionalBUFWR46+0.94+0.42+0.21+0.63
5Tyreek HillMIAWR172+0.53+0.40+0.25+0.56
6George Kittle◦ provisionalSFTE90+0.66+0.36+0.21+0.52
7DJ MooreCHIWR138+0.47+0.35+0.18+0.52
8Kalif Raymond◦ provisionalDETWR44+0.68+0.35+0.14+0.56
9Amon-Ra St. BrownDETWR165+0.43+0.34+0.18+0.50
10Adam ThielenCARWR138+0.44+0.34+0.17+0.51
11Puka NacuaLAWR160+0.42+0.34+0.18+0.50
12A.J. BrownPHIWR158+0.42+0.33+0.17+0.50
13A.T. Perry◦ provisionalNOWR18+1.06+0.33+0.10+0.56
14Ja'Marr ChaseCINWR145+0.42+0.33+0.16+0.50
15Jaylen Waddle◦ provisionalMIAWR104+0.44+0.32+0.14+0.51
16Keenan AllenLACWR150+0.41+0.32+0.16+0.49
17Deebo Samuel Sr.◦ provisionalSFWR89+0.46+0.32+0.14+0.51
18Brandon Johnson◦ provisionalDENWR31+0.69+0.32+0.10+0.54
19Isaiah Likely◦ provisionalBALTE40+0.80+0.32+0.15+0.49
20Justin Jefferson◦ provisionalMINWR100+0.43+0.32+0.13+0.50
21Mike EvansTBWR137+0.39+0.32+0.15+0.48
22Dontayvion Wicks◦ provisionalGBWR58+0.50+0.31+0.11+0.52
23Brandin Cooks◦ provisionalDALWR82+0.44+0.31+0.12+0.50
24Trenton Irwin◦ provisionalCINWR32+0.61+0.30+0.09+0.52
25Rashee Rice◦ provisionalKCWR102+0.39+0.30+0.12+0.48
26Lil'Jordan Humphrey◦ provisionalDENWR19+0.75+0.30+0.07+0.52
27Amari CooperCLEWR130+0.35+0.29+0.12+0.46
28Chris Moore◦ provisionalTENWR35+0.52+0.29+0.08+0.51
29DK Metcalf◦ provisionalSEAWR119+0.36+0.29+0.12+0.47
30Tank Dell◦ provisionalHOUWR76+0.40+0.29+0.10+0.48
31Mark Andrews◦ provisionalBALTE61+0.54+0.29+0.13+0.45
32Nick Westbrook-Ikhine◦ provisionalTENWR46+0.45+0.29+0.08+0.50
33Chris Godwin Jr.TBWR131+0.34+0.29+0.12+0.46
34Jayden Reed◦ provisionalGBWR95+0.36+0.29+0.10+0.47
35KaVontae Turpin◦ provisionalDALWR18+0.68+0.28+0.06+0.51
36Darius Slayton◦ provisionalNYGWR79+0.37+0.28+0.09+0.47
37Travis Kelce◦ provisionalKCTE121+0.40+0.28+0.14+0.43
38Tyler Lockett◦ provisionalSEAWR124+0.33+0.28+0.11+0.45
39Mike Williams◦ provisionalLACWR26+0.49+0.27+0.05+0.50
40Tee Higgins◦ provisionalCINWR76+0.35+0.27+0.08+0.47
41Olamide Zaccheaus◦ provisionalPHIWR20+0.55+0.27+0.05+0.50
42Demarcus Robinson◦ provisionalLAWR39+0.42+0.27+0.06+0.49
43Nelson Agholor◦ provisionalBALWR45+0.40+0.27+0.06+0.48
44Noah Brown◦ provisionalHOUWR56+0.37+0.27+0.07+0.48
45Chris OlaveNOWR139+0.31+0.27+0.10+0.44
46Brevin Jordan◦ provisionalHOUTE21+0.83+0.27+0.09+0.45
47Odell Beckham Jr.◦ provisionalBALWR64+0.34+0.27+0.07+0.46
48Scott Miller◦ provisionalATLWR16+0.54+0.26+0.03+0.49
49DeVonta Smith◦ provisionalPHIWR113+0.30+0.26+0.09+0.44
50Durham Smythe◦ provisionalMIATE43+0.51+0.26+0.09+0.43
51Michael Wilson◦ provisionalARIWR59+0.32+0.26+0.06+0.46
52Diontae Johnson◦ provisionalPITWR87+0.30+0.26+0.07+0.44
53Ronnie Bell◦ provisionalSFWR13+0.52+0.26+0.02+0.49
54Gabe Davis◦ provisionalBUFWR82+0.29+0.25+0.07+0.44
55Cole Kmet◦ provisionalCHITE90+0.36+0.25+0.10+0.41
56Sam LaPorta◦ provisionalDETTE122+0.33+0.25+0.11+0.40
57David Bell◦ provisionalCLEWR23+0.39+0.25+0.03+0.48
58Jameson Williams◦ provisionalDETWR42+0.32+0.25+0.04+0.46
59River Cracraft◦ provisionalMIAWR12+0.50+0.25+0.02+0.48
60Dyami Brown◦ provisionalWASWR23+0.37+0.25+0.03+0.47
61Braxton Berrios◦ provisionalMIAWR33+0.33+0.25+0.03+0.47
62Wan'Dale Robinson◦ provisionalNYGWR78+0.28+0.25+0.06+0.44
63George Pickens◦ provisionalPITWR106+0.27+0.25+0.07+0.43
64Christian Kirk◦ provisionalJAXWR85+0.28+0.25+0.06+0.44
65Mack Hollins◦ provisionalATLWR30+0.32+0.25+0.03+0.47
66Josh Downs◦ provisionalINDWR98+0.27+0.25+0.06+0.43
67Donald Parham◦ provisionalLACTE41+0.45+0.25+0.08+0.42
68Zay Flowers◦ provisionalBALWR109+0.27+0.25+0.07+0.42
69Tucker Kraft◦ provisionalGBTE40+0.44+0.24+0.07+0.42
70Jake Bobo◦ provisionalSEAWR25+0.32+0.24+0.02+0.47
71Jake Ferguson◦ provisionalDALTE102+0.32+0.24+0.09+0.39
72Michael Mayer◦ provisionalLVTE41+0.43+0.24+0.07+0.41
73Romeo Doubs◦ provisionalGBWR96+0.26+0.24+0.06+0.43
74Alec Pierce◦ provisionalINDWR65+0.26+0.24+0.04+0.44
75Kyle Philips◦ provisionalTENWR22+0.30+0.24+0.01+0.46
76Deonte Harty◦ provisionalBUFWR21+0.29+0.24+0.01+0.46
77Marvin Mims Jr.◦ provisionalDENWR33+0.27+0.24+0.02+0.46
78Stefon DiggsBUFWR161+0.24+0.24+0.08+0.40
79Richie James◦ provisionalKCWR14+0.30+0.24+0.01+0.47
80Jordan Addison◦ provisionalMINWR108+0.24+0.23+0.06+0.41
81Courtland Sutton◦ provisionalDENWR91+0.24+0.23+0.05+0.42
82Jamison Crowder◦ provisionalWASWR20+0.27+0.23+0.01+0.46
83Calvin RidleyJAXWR137+0.24+0.23+0.06+0.40
84Jauan Jennings◦ provisionalSFWR33+0.24+0.23+0.01+0.45
85Elijah Higgins◦ provisionalARITE19+0.54+0.23+0.05+0.41
86DJ Chark◦ provisionalCARWR66+0.23+0.23+0.03+0.43
87Will Mallory◦ provisionalINDTE26+0.45+0.23+0.05+0.41
88Josh Reynolds◦ provisionalDETWR64+0.23+0.23+0.03+0.43
89MyCole Pruitt◦ provisionalATLTE12+0.69+0.23+0.04+0.41
90KhaDarel Hodge◦ provisionalATLWR23+0.23+0.23+0.00+0.45
91Andrei Iosivas◦ provisionalCINWR25+0.21+0.23+0.00+0.45
92Hunter Henry◦ provisionalNETE61+0.30+0.22+0.06+0.39
93Malik Heath◦ provisionalGBWR24+0.20+0.22+0.00+0.45
94Luke Farrell◦ provisionalJAXTE15+0.53+0.22+0.04+0.41
95Dalton Schultz◦ provisionalHOUTE89+0.27+0.22+0.07+0.38
96Andrew Ogletree◦ provisionalINDTE21+0.43+0.22+0.04+0.40
97Isaiah McKenzie◦ provisionalINDWR14+0.16+0.22-0.01+0.45
98Ray-Ray McCloud◦ provisionalSFWR15+0.16+0.22-0.01+0.45
99Alex Erickson◦ provisionalLACWR29+0.19+0.22+0.00+0.44
100Ben Skowronek◦ provisionalLAWR12+0.12+0.22-0.01+0.45
101T.J. Hockenson◦ provisionalMINTE127+0.25+0.22+0.08+0.36
102Tre Tucker◦ provisionalLVWR34+0.18+0.22+0.00+0.44
103Will Dissly◦ provisionalSEATE22+0.40+0.22+0.04+0.40
104Michael Thomas◦ provisionalNOWR64+0.20+0.22+0.02+0.42
105Tyler Higbee◦ provisionalLATE70+0.27+0.22+0.06+0.38
106Austin Hooper◦ provisionalLVTE32+0.33+0.22+0.04+0.39
107Jerry Jeudy◦ provisionalDENWR87+0.19+0.22+0.03+0.40
108Julio Jones◦ provisionalPHIWR19+0.12+0.21-0.01+0.44
109Jamal Agnew◦ provisionalJAXWR21+0.12+0.21-0.01+0.44
110Foster Moreau◦ provisionalNOTE25+0.34+0.21+0.04+0.39
111Mo Alie-Cox◦ provisionalINDTE23+0.33+0.21+0.03+0.39
112Noah Fant◦ provisionalSEATE43+0.27+0.21+0.04+0.38
113Daniel Bellinger◦ provisionalNYGTE28+0.30+0.21+0.03+0.39
114Luke Musgrave◦ provisionalGBTE46+0.26+0.21+0.04+0.38
115Pharaoh Brown◦ provisionalNETE15+0.36+0.21+0.03+0.39
116Brock Wright◦ provisionalDETTE14+0.36+0.21+0.02+0.39
117Tanner Hudson◦ provisionalCINTE50+0.25+0.21+0.04+0.37
118Isaiah Hodgins◦ provisionalNYGWR33+0.12+0.21-0.01+0.42
119Taysom Hill◦ provisionalNOTE40+0.25+0.21+0.04+0.38
120Jakobi Meyers◦ provisionalLVWR106+0.17+0.20+0.02+0.38
121Rashid Shaheed◦ provisionalNOWR75+0.16+0.20+0.01+0.40
122Colby Parkinson◦ provisionalSEATE34+0.25+0.20+0.03+0.38
123Kylen Granson◦ provisionalINDTE50+0.23+0.20+0.04+0.37
124Byron Pringle◦ provisionalWASWR22+0.05+0.20-0.02+0.43
125Greg Dortch◦ provisionalARIWR41+0.12+0.20-0.01+0.41
126Michael PittmanINDWR158+0.18+0.20+0.04+0.36
127Josh Palmer◦ provisionalLACWR61+0.14+0.20-0.00+0.40
128Josh Whyle◦ provisionalTENTE15+0.25+0.20+0.02+0.38
129Jalen Tolbert◦ provisionalDALWR36+0.09+0.20-0.02+0.41
130Darren Waller◦ provisionalNYGTE74+0.21+0.20+0.04+0.36
131Mecole Hardman◦ provisionalKCWR24+0.03+0.20-0.03+0.42
132Robert Tonyan◦ provisionalCHITE17+0.22+0.20+0.02+0.38
133Tutu Atwell◦ provisionalLAWR68+0.14+0.20+0.00+0.39
134Jeremy Ruckert◦ provisionalNYJTE22+0.20+0.20+0.02+0.37
135Pat Freiermuth◦ provisionalPITTE48+0.20+0.20+0.03+0.36
136Dallas Goedert◦ provisionalPHITE83+0.19+0.19+0.04+0.35
137Kyle Pitts◦ provisionalATLTE90+0.19+0.19+0.04+0.35
138Jalin Hyatt◦ provisionalNYGWR40+0.08+0.19-0.02+0.40
139Tim Jones◦ provisionalJAXWR19-0.05+0.19-0.04+0.42
140Cade Otton◦ provisionalTBTE68+0.19+0.19+0.03+0.35
141Stone Smartt◦ provisionalLACTE21+0.16+0.19+0.01+0.37
142Lucas Krull◦ provisionalDENTE14+0.14+0.19+0.01+0.37
143Michael Gallup◦ provisionalDALWR57+0.10+0.19-0.01+0.39
144Josh Oliver◦ provisionalMINTE28+0.15+0.19+0.01+0.36
145Lynn Bowden◦ provisionalNOWR16-0.14+0.19-0.04+0.42
146Jaxon Smith-Njigba◦ provisionalSEAWR93+0.13+0.19+0.00+0.37
147Quentin Johnston◦ provisionalLACWR67+0.11+0.19-0.01+0.38
148Parker Washington◦ provisionalJAXWR21-0.07+0.19-0.04+0.41
149Keelan Doss◦ provisionalLACWR13-0.23+0.19-0.05+0.42
150Justin Watson◦ provisionalKCWR53+0.08+0.19-0.02+0.39
151Johnny Mundt◦ provisionalMINTE23+0.12+0.19+0.01+0.36
152DeAndre HopkinsTENWR137+0.14+0.18+0.01+0.35
153Mitchell Wilcox◦ provisionalCINTE12+0.02+0.18-0.00+0.37
154Samori Toure◦ provisionalGBWR19-0.13+0.18-0.05+0.41
155Noah Gray◦ provisionalKCTE41+0.13+0.18+0.01+0.35
156Jalen Guyton◦ provisionalLACWR21-0.11+0.18-0.05+0.41
157Treylon Burks◦ provisionalTENWR30-0.03+0.18-0.04+0.40
158Trent Sherfield◦ provisionalBUFWR22-0.10+0.18-0.04+0.40
159Cedrick Wilson Jr.◦ provisionalMIAWR38+0.01+0.18-0.03+0.39
160Rashod Bateman◦ provisionalBALWR56+0.06+0.18-0.02+0.38
161Cole Turner◦ provisionalWASTE15-0.00+0.18-0.01+0.36
162Marquez Valdes-Scantling◦ provisionalKCWR42+0.02+0.18-0.04+0.39
163Hunter Renfrow◦ provisionalLVWR37-0.01+0.18-0.04+0.39
164K.J. Osborn◦ provisionalMINWR75+0.08+0.18-0.02+0.37
165Jonnu Smith◦ provisionalATLTE70+0.13+0.17+0.01+0.33
166Dalton Kincaid◦ provisionalBUFTE91+0.14+0.17+0.02+0.33
167Quez Watkins◦ provisionalPHIWR21-0.16+0.17-0.05+0.40
168Cooper Kupp◦ provisionalLAWR97+0.10+0.17-0.01+0.36
169Tommy Tremble◦ provisionalCARTE32+0.07+0.17-0.00+0.35
170Xavier Gipson◦ provisionalNYJWR38-0.02+0.17-0.04+0.39
171Christian Watson◦ provisionalGBWR53+0.04+0.17-0.03+0.38
172Drake London◦ provisionalATLWR112+0.11+0.17-0.01+0.35
173Drew Sample◦ provisionalCINTE27+0.02+0.17-0.01+0.35
174Gerald Everett◦ provisionalLACTE70+0.11+0.17+0.01+0.33
175Allen Lazard◦ provisionalNYJWR49+0.01+0.17-0.04+0.37
176DeVante Parker◦ provisionalNEWR55+0.02+0.17-0.04+0.37
177Donovan Peoples-Jones◦ provisionalDETWR25-0.16+0.17-0.06+0.39
178Calvin Austin III◦ provisionalPITWR30-0.11+0.16-0.05+0.38
179Jordan Akins◦ provisionalCLETE23-0.05+0.16-0.01+0.34
180Chig Okonkwo◦ provisionalTENTE77+0.10+0.16+0.01+0.32
181Brandon Powell◦ provisionalMINWR44-0.03+0.16-0.05+0.37
182C.J. Uzomah◦ provisionalNYJTE12-0.28+0.16-0.02+0.35
183Curtis Samuel◦ provisionalWASWR91+0.07+0.16-0.02+0.35
184Derius Davis◦ provisionalLACWR17-0.35+0.16-0.07+0.39
185Stephen Sullivan◦ provisionalCARTE24-0.07+0.16-0.02+0.34
186Tyler Boyd◦ provisionalCINWR98+0.06+0.15-0.03+0.34
187Robert Woods◦ provisionalHOUWR75+0.03+0.15-0.04+0.35
188Xavier Hutchinson◦ provisionalHOUWR19-0.35+0.15-0.07+0.38
189Adam Trautman◦ provisionalDENTE35-0.03+0.15-0.02+0.33
190Trey McBride◦ provisionalARITE106+0.09+0.15+0.01+0.30
191Luke Schoonmaker◦ provisionalDALTE15-0.30+0.15-0.03+0.34
192Tyler Conklin◦ provisionalNYJTE87+0.07+0.15-0.00+0.31
193Harrison Bryant◦ provisionalCLETE20-0.21+0.15-0.03+0.33
194Marquise Goodwin◦ provisionalCLEWR13-0.64+0.15-0.08+0.38
195Terry McLaurinWASWR132+0.07+0.15-0.02+0.32
196Ty Montgomery◦ provisionalNEWR12-0.71+0.15-0.08+0.38
197John Metchie III◦ provisionalHOUWR30-0.20+0.15-0.07+0.37
198Hayden Hurst◦ provisionalCARTE32-0.12+0.14-0.03+0.32
199Davante AdamsLVWR175+0.08+0.14-0.02+0.30
200Allen Robinson◦ provisionalPITWR49-0.09+0.14-0.07+0.35
201Connor Heyward◦ provisionalPITTE34-0.12+0.14-0.03+0.31
202Terrace Marshall Jr.◦ provisionalCARWR33-0.22+0.14-0.08+0.35
203Evan Engram◦ provisionalJAXTE144+0.07+0.14-0.00+0.27
204Mike Gesicki◦ provisionalNETE46-0.07+0.14-0.03+0.30
205John Bates◦ provisionalWASTE28-0.20+0.14-0.04+0.31
206Deven Thompkins◦ provisionalTBWR25-0.35+0.13-0.09+0.36
207Rondale Moore◦ provisionalARIWR63-0.07+0.13-0.07+0.33
208Zay Jones◦ provisionalJAXWR64-0.07+0.13-0.07+0.33
209Darnell Mooney◦ provisionalCHIWR61-0.08+0.13-0.07+0.33
210Kadarius Toney◦ provisionalKCWR38-0.22+0.13-0.09+0.34
211Juwan Johnson◦ provisionalNOTE59-0.08+0.12-0.04+0.28
212Sterling Shepard◦ provisionalNYGWR22-0.51+0.12-0.10+0.34
213Elijah Moore◦ provisionalCLEWR104-0.02+0.12-0.06+0.30
214Jalen Reagor◦ provisionalNEWR23-0.49+0.12-0.11+0.34
215Skyy Moore◦ provisionalKCWR38-0.25+0.12-0.10+0.33
216DeMario Douglas◦ provisionalNEWR79-0.07+0.11-0.08+0.30
217Tyler Scott◦ provisionalCHIWR32-0.35+0.11-0.10+0.33
218Logan Thomas◦ provisionalWASTE79-0.06+0.11-0.05+0.27
219JuJu Smith-Schuster◦ provisionalNEWR47-0.22+0.11-0.10+0.32
220Kendrick Bourne◦ provisionalNEWR55-0.17+0.11-0.10+0.31
221Chase Claypool◦ provisionalMIAWR21-0.63+0.11-0.12+0.33
222Tyquan Thornton◦ provisionalNEWR23-0.58+0.11-0.12+0.33
223Randall Cobb◦ provisionalNYJWR18-0.80+0.10-0.13+0.33
224Trey Palmer◦ provisionalTBWR69-0.13+0.10-0.09+0.30
225Dawson Knox◦ provisionalBUFTE37-0.31+0.10-0.07+0.27
226Marquise Brown◦ provisionalARIWR104-0.07+0.09-0.09+0.27
227Zach Ertz◦ provisionalARITE43-0.33+0.08-0.09+0.25
228Irv Smith◦ provisionalCINTE26-0.60+0.08-0.09+0.26
229Zach Pascal◦ provisionalARIWR15-1.16+0.08-0.15+0.31
230David Njoku◦ provisionalCLETE123-0.09+0.07-0.07+0.21
231Van Jefferson◦ provisionalATLWR43-0.41+0.07-0.14+0.28
232Garrett WilsonNYJWR168-0.06+0.06-0.10+0.22
233Jahan Dotson◦ provisionalWASWR83-0.19+0.06-0.13+0.25
234Parris Campbell◦ provisionalNYGWR27-0.83+0.04-0.18+0.26
235Jonathan Mingo◦ provisionalCARWR85-0.29+0.02-0.17+0.21
236Cedric Tillman◦ provisionalCLEWR44-0.60+0.01-0.20+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).