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

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
87 TE · 160 WR
targets to trust the number
shrunkrawthe shrink90% CI
-0.20.00.20.40.6TE avgWR avg1Tucker KraftGB · 44+0.482Puka NacuaLA · 166+0.473Dalton KincaidBUF · 50+0.464George KittleSF · 69+0.455Sam LaPortaDET · 49+0.446Darren WallerMIA · 35+0.427George PickensDAL · 138+0.428Colston LovelandCHI · 83+0.429Stefon DiggsNE · 102+0.4110Daniel BellingerNYG · 26+0.4011Jaxon Smith-NjigbaSEA · 163+0.3912Alec PierceIND · 84+0.3813Trey McBrideARI · 170+0.3714Brenton StrangeJAX · 60+0.3715Jackson HawesBUF · 19+0.3616Kayshon BoutteNE · 46+0.3617Jameson WilliamsDET · 102+0.3518Austin HooperNE · 26+0.3519Dallas GoedertPHI · 82+0.3520Hunter HenryNE · 87+0.3521Greg DulcichMIA · 34+0.3422DeVonta SmithPHI · 114+0.3323AJ BarnerSEA · 68+0.3324Pat FreiermuthPIT · 54+0.3325Travis KelceKC · 109+0.3226Christian WatsonGB · 55+0.3227Tyquan ThorntonKC · 37+0.3228Xavier SmithLA · 24+0.3229DeMario DouglasNE · 46+0.3130Josh OliverMIN · 20+0.3131Terry McLaurinWAS · 60+0.3132Tyreek HillMIA · 29+0.3033Isaac TeSlaaDET · 27+0.2934Jalen McMillanTB · 15+0.2835Gunner OlszewskiNYG · 13+0.2736Chris MooreWAS · 23+0.2737Tyrell ShaversBUF · 23+0.2738Tyler JohnsonNYJ · 18+0.2739Gabe DavisBUF · 18+0.2640Luke McCaffreyWAS · 16+0.26

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

EPA per target leaderboard for the 2025 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPostargetsRawShrunk90% interval
1Tucker Kraft◦ provisionalGBTE44+0.89+0.48+0.26+0.69
2Puka NacuaLAWR166+0.70+0.47+0.32+0.62
3Dalton Kincaid◦ provisionalBUFTE50+0.79+0.46+0.25+0.66
4George Kittle◦ provisionalSFTE69+0.67+0.45+0.25+0.64
5Sam LaPorta◦ provisionalDETTE49+0.74+0.44+0.23+0.65
6Darren Waller◦ provisionalMIATE35+0.81+0.42+0.20+0.64
7George Pickens◦ provisionalDALWR138+0.64+0.42+0.26+0.58
8Colston Loveland◦ provisionalCHITE83+0.57+0.42+0.23+0.60
9Stefon Diggs◦ provisionalNEWR102+0.69+0.41+0.24+0.58
10Daniel Bellinger◦ provisionalNYGTE26+0.87+0.40+0.18+0.63
11Jaxon Smith-NjigbaSEAWR163+0.56+0.39+0.24+0.55
12Alec Pierce◦ provisionalINDWR84+0.66+0.38+0.20+0.55
13Trey McBrideARITE170+0.43+0.37+0.22+0.52
14Brenton Strange◦ provisionalJAXTE60+0.52+0.37+0.17+0.57
15Jackson Hawes◦ provisionalBUFTE19+0.78+0.36+0.12+0.59
16Kayshon Boutte◦ provisionalNEWR46+0.80+0.36+0.17+0.55
17Jameson Williams◦ provisionalDETWR102+0.55+0.35+0.19+0.52
18Austin Hooper◦ provisionalNETE26+0.65+0.35+0.12+0.58
19Dallas Goedert◦ provisionalPHITE82+0.44+0.35+0.16+0.54
20Hunter HenryNETE87+0.43+0.35+0.16+0.53
21Greg Dulcich◦ provisionalMIATE34+0.52+0.34+0.11+0.56
22DeVonta Smith◦ provisionalPHIWR114+0.48+0.33+0.17+0.50
23AJ Barner◦ provisionalSEATE68+0.41+0.33+0.13+0.52
24Pat Freiermuth◦ provisionalPITTE54+0.43+0.33+0.12+0.53
25Travis KelceKCTE109+0.37+0.32+0.15+0.50
26Christian Watson◦ provisionalGBWR55+0.59+0.32+0.13+0.51
27Tyquan Thornton◦ provisionalKCWR37+0.71+0.32+0.12+0.51
28Xavier Smith◦ provisionalLAWR24+0.91+0.32+0.12+0.52
29DeMario Douglas◦ provisionalNEWR46+0.61+0.31+0.12+0.51
30Josh Oliver◦ provisionalMINTE20+0.53+0.31+0.08+0.55
31Terry McLaurin◦ provisionalWASWR60+0.53+0.31+0.13+0.50
32Juwan JohnsonNOTE102+0.35+0.31+0.13+0.49
33Dalton SchultzHOUTE107+0.34+0.31+0.13+0.48
34Adam Trautman◦ provisionalDENTE23+0.47+0.31+0.08+0.54
35Luther Burden III◦ provisionalCHIWR60+0.50+0.30+0.12+0.49
36Ryan Flournoy◦ provisionalDALWR56+0.51+0.30+0.12+0.49
37John Bates◦ provisionalWASTE16+0.49+0.30+0.06+0.54
38Tyreek Hill◦ provisionalMIAWR29+0.68+0.30+0.10+0.50
39Zay Flowers◦ provisionalBALWR119+0.39+0.30+0.13+0.46
40Ricky Pearsall◦ provisionalSFWR53+0.50+0.30+0.11+0.49
41Hunter Long◦ provisionalJAXTE17+0.46+0.30+0.06+0.54
42Dawson Knox◦ provisionalBUFTE50+0.35+0.30+0.09+0.50
43Isaac TeSlaa◦ provisionalDETWR27+0.66+0.29+0.09+0.49
44Romeo Doubs◦ provisionalGBWR86+0.40+0.29+0.12+0.46
45Marvin Harrison Jr.◦ provisionalARIWR74+0.42+0.29+0.11+0.47
46Courtland Sutton◦ provisionalDENWR125+0.36+0.29+0.13+0.45
47Darnell Washington◦ provisionalPITTE44+0.33+0.29+0.08+0.50
48Jalen Coker◦ provisionalCARWR45+0.49+0.29+0.09+0.48
49Mack Hollins◦ provisionalNEWR65+0.42+0.28+0.10+0.47
50Ian Thomas◦ provisionalLVTE13+0.39+0.28+0.04+0.53
51Luke Musgrave◦ provisionalGBTE31+0.33+0.28+0.06+0.51
52Jalen McMillan◦ provisionalTBWR15+0.83+0.28+0.07+0.49
53Tee Higgins◦ provisionalCINWR99+0.36+0.28+0.11+0.45
54Jake Tonges◦ provisionalSFTE46+0.31+0.28+0.07+0.49
55Amon-Ra St. BrownDETWR172+0.32+0.28+0.13+0.43
56Charlie Kolar◦ provisionalBALTE15+0.34+0.28+0.04+0.52
57Jaylen Waddle◦ provisionalMIAWR100+0.34+0.27+0.10+0.44
58Gunner Olszewski◦ provisionalNYGWR13+0.82+0.27+0.07+0.48
59Kalif Raymond◦ provisionalDETWR30+0.51+0.27+0.07+0.47
60Terrance Ferguson◦ provisionalLATE25+0.30+0.27+0.04+0.50
61Nico Collins◦ provisionalHOUWR121+0.32+0.27+0.11+0.43
62KaVontae Turpin◦ provisionalDALWR38+0.44+0.27+0.08+0.46
63Brandin Cooks◦ provisionalBUFWR36+0.45+0.27+0.07+0.46
64Kendrick Bourne◦ provisionalSFWR53+0.39+0.27+0.08+0.46
65DK Metcalf◦ provisionalPITWR99+0.33+0.27+0.10+0.44
66Cole Kmet◦ provisionalCHITE49+0.27+0.27+0.06+0.48
67Chris Moore◦ provisionalWASWR23+0.53+0.27+0.07+0.47
68Tyrell Shavers◦ provisionalBUFWR23+0.53+0.27+0.07+0.47
69Devaughn Vele◦ provisionalNOWR40+0.42+0.27+0.07+0.46
70Brock BowersLVTE87+0.27+0.27+0.08+0.45
71Tyler Johnson◦ provisionalNYJWR18+0.59+0.27+0.06+0.47
72Jayden Reed◦ provisionalGBWR22+0.53+0.27+0.06+0.47
73Gabe Davis◦ provisionalBUFWR18+0.57+0.26+0.06+0.47
74Tyler Higbee◦ provisionalLATE36+0.26+0.26+0.04+0.48
75Luke Farrell◦ provisionalSFTE14+0.25+0.26+0.02+0.51
76John FitzPatrick◦ provisionalGBTE15+0.25+0.26+0.02+0.50
77Ben Sinnott◦ provisionalWASTE13+0.25+0.26+0.02+0.51
78Luke McCaffrey◦ provisionalWASWR16+0.59+0.26+0.06+0.47
79Matthew Golden◦ provisionalGBWR44+0.38+0.26+0.07+0.45
80Jaylin Noel◦ provisionalHOUWR35+0.41+0.26+0.07+0.46
81Tez Johnson◦ provisionalTBWR44+0.37+0.26+0.07+0.45
82Parker Washington◦ provisionalJAXWR97+0.31+0.26+0.09+0.43
83Tory Horton◦ provisionalSEAWR22+0.47+0.26+0.06+0.46
84Kyle Williams◦ provisionalNEWR21+0.47+0.26+0.05+0.46
85Tre Harris◦ provisionalLACWR43+0.36+0.26+0.06+0.45
86Johnny Mundt◦ provisionalJAXTE19+0.21+0.26+0.02+0.49
87Keenan Allen◦ provisionalLACWR122+0.29+0.25+0.09+0.42
88Oronde Gadsden II◦ provisionalLACTE69+0.24+0.25+0.06+0.45
89Tommy Tremble◦ provisionalCARTE37+0.22+0.25+0.03+0.47
90Marquise Brown◦ provisionalKCWR74+0.30+0.25+0.07+0.43
91Will Dissly◦ provisionalLACTE16+0.17+0.25+0.01+0.49
92A.J. Brown◦ provisionalPHIWR121+0.28+0.25+0.09+0.41
93Calvin Ridley◦ provisionalTENWR36+0.34+0.25+0.05+0.45
94Colby Parkinson◦ provisionalLATE56+0.22+0.25+0.05+0.45
95Quentin Johnston◦ provisionalLACWR84+0.28+0.25+0.07+0.42
96Dontayvion Wicks◦ provisionalGBWR46+0.31+0.25+0.06+0.44
97Brycen Tremayne◦ provisionalCARWR18+0.40+0.25+0.04+0.45
98Cade Stover◦ provisionalHOUTE16+0.14+0.25+0.01+0.49
99Pat Bryant◦ provisionalDENWR49+0.29+0.24+0.05+0.43
100Darius Slayton◦ provisionalNYGWR65+0.28+0.24+0.06+0.43
101T.J. Hockenson◦ provisionalMINTE66+0.21+0.24+0.05+0.44
102Luke Schoonmaker◦ provisionalDALTE23+0.16+0.24+0.01+0.47
103Chris Godwin Jr.◦ provisionalTBWR52+0.28+0.24+0.05+0.43
104Lil'Jordan Humphrey◦ provisionalDENWR25+0.32+0.24+0.04+0.44
105Grant Calcaterra◦ provisionalPHITE13+0.07+0.24-0.00+0.48
106Drew Sample◦ provisionalCINTE20+0.13+0.24+0.01+0.48
107Jeremy Ruckert◦ provisionalNYJTE29+0.16+0.24+0.01+0.46
108Zay Jones◦ provisionalARIWR18+0.31+0.24+0.03+0.44
109Davis Allen◦ provisionalLATE33+0.16+0.24+0.02+0.46
110CeeDee Lamb◦ provisionalDALWR117+0.25+0.24+0.07+0.40
111Isaiah Hodgins◦ provisionalNYGWR19+0.29+0.24+0.03+0.44
112Mitchell Evans◦ provisionalCARTE25+0.13+0.23+0.00+0.46
113Jayden Higgins◦ provisionalHOUWR69+0.24+0.23+0.05+0.41
114Davante Adams◦ provisionalLAWR114+0.24+0.23+0.07+0.40
115Casey Washington◦ provisionalATLWR14+0.27+0.23+0.03+0.44
116Tre Tucker◦ provisionalLVWR92+0.24+0.23+0.06+0.40
117DeAndre Hopkins◦ provisionalBALWR39+0.24+0.23+0.04+0.43
118Isaiah Likely◦ provisionalBALTE36+0.15+0.23+0.01+0.45
119Kyle PittsATLTE119+0.21+0.23+0.06+0.40
120Tim Patrick◦ provisionalJAXWR24+0.24+0.23+0.03+0.43
121Jimmy Horn Jr.◦ provisionalCARWR15+0.23+0.23+0.02+0.44
122Rome Odunze◦ provisionalCHIWR91+0.23+0.23+0.06+0.40
123Chris Olave◦ provisionalNOWR156+0.23+0.23+0.08+0.38
124Xavier Hutchinson◦ provisionalHOUWR57+0.23+0.23+0.04+0.41
125Ja'Tavion Sanders◦ provisionalCARTE34+0.13+0.23+0.01+0.45
126Ja'Marr ChaseCINWR185+0.22+0.23+0.08+0.37
127Demarcus Robinson◦ provisionalSFWR36+0.21+0.23+0.03+0.42
128Tutu Atwell◦ provisionalLAWR15+0.18+0.23+0.02+0.43
129Jalen Nailor◦ provisionalMINWR54+0.21+0.23+0.04+0.41
130Drake London◦ provisionalATLWR113+0.22+0.23+0.06+0.39
131Roman Wilson◦ provisionalPITWR21+0.19+0.23+0.02+0.43
132Julian Hill◦ provisionalMIATE21+0.06+0.22-0.01+0.46
133Brevyn Spann-Ford◦ provisionalDALTE13-0.05+0.22-0.02+0.47
134James Proche◦ provisionalTENWR12+0.14+0.22+0.01+0.43
135Jamari Thrash◦ provisionalCLEWR15+0.16+0.22+0.02+0.43
136Andrei Iosivas◦ provisionalCINWR58+0.20+0.22+0.04+0.41
137Jake FergusonDALTE103+0.19+0.22+0.05+0.40
138Xavier Worthy◦ provisionalKCWR73+0.20+0.22+0.04+0.40
139Keon Coleman◦ provisionalBUFWR62+0.20+0.22+0.04+0.40
140Josh Palmer◦ provisionalBUFWR37+0.18+0.22+0.03+0.42
141Rashee Rice◦ provisionalKCWR79+0.20+0.22+0.04+0.40
142Taysom Hill◦ provisionalNOTE16-0.03+0.22-0.02+0.46
143Tetairoa McMillan◦ provisionalCARWR122+0.21+0.22+0.06+0.38
144Xavier Weaver◦ provisionalARIWR13+0.09+0.22+0.01+0.43
145Michael Wilson◦ provisionalARIWR127+0.20+0.22+0.06+0.38
146Zach Ertz◦ provisionalWASTE73+0.16+0.22+0.03+0.41
147Cedric Tillman◦ provisionalCLEWR39+0.17+0.22+0.02+0.41
148Michael Pittman◦ provisionalINDWR114+0.20+0.22+0.05+0.38
149Chig Okonkwo◦ provisionalTENTE79+0.16+0.22+0.03+0.40
150Van Jefferson◦ provisionalTENWR52+0.17+0.22+0.03+0.40
151Brian Thomas Jr.◦ provisionalJAXWR91+0.19+0.21+0.04+0.39
152Mason Taylor◦ provisionalNYJTE66+0.15+0.21+0.02+0.41
153Mitchell Tinsley◦ provisionalCINWR24+0.11+0.21+0.01+0.42
154Adam Thielen◦ provisionalPITWR36+0.14+0.21+0.02+0.41
155Jalen Tolbert◦ provisionalDALWR35+0.14+0.21+0.02+0.41
156Tanner Hudson◦ provisionalCINTE24+0.02+0.21-0.02+0.44
157Jordan Whittington◦ provisionalLAWR25+0.10+0.21+0.01+0.41
158Greg Dortch◦ provisionalARIWR33+0.13+0.21+0.02+0.41
159Jordan Addison◦ provisionalMINWR79+0.18+0.21+0.04+0.39
160Mike Gesicki◦ provisionalCINTE43+0.10+0.21-0.00+0.42
161Nick Westbrook-Ikhine◦ provisionalMIAWR20+0.06+0.21+0.01+0.41
162Deebo Samuel Sr.◦ provisionalWASWR100+0.18+0.21+0.04+0.38
163Mo Alie-Cox◦ provisionalINDTE20-0.04+0.21-0.03+0.44
164DJ Moore◦ provisionalCHIWR85+0.16+0.21+0.03+0.38
165Scott Miller◦ provisionalPITWR14-0.08+0.20-0.00+0.41
166Kevin Austin Jr.◦ provisionalNOWR23+0.01+0.20+0.00+0.40
167Malik Nabers◦ provisionalNYGWR35+0.07+0.20+0.00+0.40
168Theo Johnson◦ provisionalNYGTE74+0.12+0.20+0.01+0.39
169Elijah Higgins◦ provisionalARITE37+0.04+0.20-0.02+0.42
170Brock Wright◦ provisionalDETTE22-0.09+0.19-0.04+0.43
171Isaiah Williams◦ provisionalNYJWR36+0.03+0.19-0.00+0.39
172Tyler WarrenINDTE114+0.14+0.19+0.02+0.36
173Malachi Corley◦ provisionalCLEWR14-0.23+0.19-0.01+0.40
174Cooper Kupp◦ provisionalSEAWR71+0.11+0.19+0.01+0.37
175JuJu Smith-Schuster◦ provisionalKCWR45+0.06+0.19+0.00+0.38
176Marvin Mims Jr.◦ provisionalDENWR51+0.07+0.19+0.00+0.38
177Gunnar Helm◦ provisionalTENTE55+0.07+0.19-0.01+0.39
178Mike Evans◦ provisionalTBWR62+0.08+0.19+0.01+0.37
179Josh Reynolds◦ provisionalNYJWR22-0.11+0.19-0.01+0.39
180Hunter Renfrow◦ provisionalCARWR26-0.08+0.19-0.01+0.39
181Wan'Dale Robinson◦ provisionalNYGWR141+0.14+0.19+0.03+0.34
182Elijah Moore◦ provisionalBUFWR17-0.23+0.19-0.02+0.39
183KeAndre Lambert-Smith◦ provisionalLACWR12-0.41+0.18-0.02+0.39
184Jack Bech◦ provisionalLVWR29-0.07+0.18-0.02+0.38
185Josh Downs◦ provisionalINDWR88+0.10+0.18+0.01+0.36
186Gage Larvadain◦ provisionalCLEWR15-0.32+0.18-0.02+0.39
187David Sills◦ provisionalATLWR36-0.05+0.18-0.02+0.37
188Marquez Valdes-Scantling◦ provisionalPITWR29-0.10+0.18-0.02+0.38
189Rashod Bateman◦ provisionalBALWR39-0.04+0.18-0.02+0.37
190Isaiah Bond◦ provisionalCLEWR44-0.02+0.18-0.02+0.37
191Dyami Brown◦ provisionalJAXWR37-0.06+0.18-0.02+0.37
192Troy Franklin◦ provisionalDENWR107+0.09+0.17+0.01+0.34
193Darnell Mooney◦ provisionalATLWR72+0.05+0.17-0.01+0.35
194Jakobi Meyers◦ provisionalJAXWR110+0.09+0.17+0.01+0.34
195Arian Smith◦ provisionalNYJWR16-0.40+0.17-0.03+0.38
196Dylan Drummond◦ provisionalATLWR12-0.59+0.17-0.04+0.38
197Khalil Shakir◦ provisionalBUFWR97+0.08+0.17+0.00+0.34
198Travis Hunter◦ provisionalJAXWR45-0.05+0.17-0.02+0.36
199Jonnu Smith◦ provisionalPITTE55+0.01+0.17-0.04+0.37
200John Metchie III◦ provisionalNYJWR48-0.05+0.17-0.02+0.35
201Mason Tipton◦ provisionalNOWR17-0.44+0.17-0.04+0.37
202Ladd McConkey◦ provisionalLACWR106+0.07+0.17-0.00+0.33
203Chimere Dike◦ provisionalTENWR74+0.02+0.16-0.02+0.34
204Tanner Conner◦ provisionalMIATE15-0.43+0.16-0.08+0.40
205Evan Engram◦ provisionalDENTE77+0.05+0.16-0.03+0.35
206Jaylin Lane◦ provisionalWASWR32-0.18+0.16-0.04+0.36
207Jalin Hyatt◦ provisionalNYGWR14-0.65+0.16-0.05+0.37
208Sterling Shepard◦ provisionalTBWR54-0.05+0.16-0.03+0.35
209Garrett Wilson◦ provisionalNYJWR60-0.03+0.16-0.03+0.34
210Mark Andrews◦ provisionalBALTE70+0.02+0.16-0.04+0.35
211Ray-Ray McCloud◦ provisionalNYGWR15-0.63+0.16-0.05+0.36
212Cade Otton◦ provisionalTBTE82+0.04+0.15-0.03+0.34
213Treylon Burks◦ provisionalWASWR22-0.40+0.15-0.05+0.36
214Konata Mumpfield◦ provisionalLAWR23-0.38+0.15-0.05+0.35
215Emeka Egbuka◦ provisionalTBWR128+0.06+0.15-0.01+0.31
216Allen Lazard◦ provisionalNYJWR18-0.54+0.15-0.05+0.36
217Calvin Austin III◦ provisionalPITWR55-0.08+0.15-0.04+0.34
218Olamide Zaccheaus◦ provisionalCHIWR66-0.06+0.15-0.04+0.33
219Xavier Legette◦ provisionalCARWR64-0.06+0.15-0.04+0.33
220David Njoku◦ provisionalCLETE48-0.08+0.14-0.07+0.35
221Jauan Jennings◦ provisionalSFWR93-0.02+0.14-0.04+0.31
222Tyler Lockett◦ provisionalLVWR56-0.15+0.13-0.06+0.32
223Noah Gray◦ provisionalKCTE38-0.18+0.13-0.09+0.35
224Dont'e Thornton Jr.◦ provisionalLVWR30-0.40+0.13-0.07+0.33
225Rashid Shaheed◦ provisionalSEAWR92-0.05+0.13-0.04+0.30
226Harold Fannin Jr.CLETE108+0.01+0.13-0.05+0.30
227Malik Washington◦ provisionalMIAWR65-0.15+0.12-0.06+0.30
228Jahan Dotson◦ provisionalPHIWR36-0.42+0.11-0.09+0.31
229Elic Ayomanor◦ provisionalTENWR89-0.11+0.11-0.06+0.28
230Michael Mayer◦ provisionalLVTE50-0.20+0.10-0.11+0.30
231Noah Fant◦ provisionalCINTE41-0.29+0.09-0.13+0.30
232Adonai Mitchell◦ provisionalNYJWR74-0.22+0.09-0.09+0.27
233Justin Jefferson◦ provisionalMINWR142-0.10+0.08-0.08+0.23
234Christian Kirk◦ provisionalHOUWR53-0.40+0.07-0.11+0.26
235Elijah Arroyo◦ provisionalSEATE26-0.62+0.06-0.17+0.29
236Jerry Jeudy◦ provisionalCLEWR106-0.30+0.02-0.15+0.18

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