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

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
349 TE · 595 WR
targets to trust the number
shrunkrawthe shrink90% CI
0.00.10.20.30.4TE avgWR avg1Jaylen WaddleMIA · 118+0.292Stefon DiggsBUF · 154+0.283Justin JeffersonMIN · 185+0.274Tee HigginsCIN · 110+0.265DeVonta SmithPHI · 137+0.266George PickensPIT · 85+0.267Rashid ShaheedNO · 34+0.268JuJu Smith-Schust…KC · 102+0.269Jerry JeudyDEN · 100+0.2610CeeDee LambDAL · 156+0.2611Tyreek HillMIA · 170+0.2612Dallas GoedertPHI · 69+0.2613Amon-Ra St. BrownDET · 146+0.2614Travis KelceKC · 153+0.2515A.J. BrownPHI · 145+0.2516Amari CooperCLE · 133+0.2517Terry McLaurinWAS · 120+0.2518Darius SlaytonNYG · 71+0.2519Christian WatsonGB · 66+0.2520Trenton IrwinCIN · 23+0.2521Brandon AiyukSF · 114+0.2522Jakobi MeyersNE · 98+0.2423Zay JonesJAX · 122+0.2424Michael ThomasNO · 22+0.2425Marquise GoodwinSEA · 42+0.2426Randall CobbGB · 50+0.2427Mecole HardmanKC · 34+0.2428Tyler LockettSEA · 117+0.2429Terrace Marshall …CAR · 47+0.2430Mike WilliamsLAC · 93+0.2431Kendall HintonDEN · 33+0.2432KhaDarel HodgeATL · 21+0.2433Ray-Ray McCloudSF · 25+0.2334George KittleSF · 86+0.2335Byron PringleCHI · 16+0.2336Jalen NailorMIN · 13+0.2337Tom KennedyDET · 15+0.2338Will DisslySEA · 38+0.2339Chig OkonkwoTEN · 47+0.2240Brock WrightDET · 24+0.2141Donald ParhamLAC · 12+0.1942Mitchell WilcoxCIN · 18+0.1943Joseph FortsonKC · 13+0.1944Jack StollPHI · 14+0.1945Eric TomlinsonDEN · 13+0.19

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

EPA per target leaderboard for the 2022 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPostargetsRawShrunk90% interval
1Jaylen Waddle◦ provisionalMIAWR118+0.64+0.29+0.19+0.39
2Stefon Diggs◦ provisionalBUFWR154+0.49+0.28+0.18+0.38
3Justin Jefferson◦ provisionalMINWR185+0.41+0.27+0.17+0.36
4Tee Higgins◦ provisionalCINWR110+0.50+0.26+0.16+0.37
5DeVonta Smith◦ provisionalPHIWR137+0.44+0.26+0.16+0.36
6George Pickens◦ provisionalPITWR85+0.53+0.26+0.16+0.36
7Rashid Shaheed◦ provisionalNOWR34+0.91+0.26+0.15+0.37
8JuJu Smith-Schuster◦ provisionalKCWR102+0.48+0.26+0.16+0.36
9Jerry Jeudy◦ provisionalDENWR100+0.47+0.26+0.16+0.36
10CeeDee Lamb◦ provisionalDALWR156+0.40+0.26+0.16+0.36
11Tyreek Hill◦ provisionalMIAWR170+0.38+0.26+0.16+0.35
12Dallas Goedert◦ provisionalPHITE69+0.65+0.26+0.13+0.38
13Amon-Ra St. Brown◦ provisionalDETWR146+0.39+0.26+0.16+0.35
14Travis Kelce◦ provisionalKCTE153+0.43+0.25+0.14+0.36
15A.J. Brown◦ provisionalPHIWR145+0.39+0.25+0.15+0.35
16Amari Cooper◦ provisionalCLEWR133+0.39+0.25+0.15+0.35
17Terry McLaurin◦ provisionalWASWR120+0.41+0.25+0.15+0.35
18Darius Slayton◦ provisionalNYGWR71+0.50+0.25+0.15+0.36
19Christian Watson◦ provisionalGBWR66+0.47+0.25+0.14+0.35
20Trenton Irwin◦ provisionalCINWR23+0.86+0.25+0.14+0.35
21Brandon Aiyuk◦ provisionalSFWR114+0.37+0.25+0.14+0.35
22Jakobi Meyers◦ provisionalNEWR98+0.38+0.24+0.14+0.35
23Zay Jones◦ provisionalJAXWR122+0.34+0.24+0.14+0.34
24Michael Thomas◦ provisionalNOWR22+0.76+0.24+0.13+0.35
25Marquise Goodwin◦ provisionalSEAWR42+0.50+0.24+0.13+0.35
26Randall Cobb◦ provisionalGBWR50+0.45+0.24+0.13+0.35
27Mecole Hardman◦ provisionalKCWR34+0.55+0.24+0.13+0.35
28Tyler Lockett◦ provisionalSEAWR117+0.33+0.24+0.14+0.34
29Terrace Marshall Jr.◦ provisionalCARWR47+0.46+0.24+0.13+0.35
30Mike Williams◦ provisionalLACWR93+0.34+0.24+0.13+0.34
31Olamide Zaccheaus◦ provisionalATLWR61+0.39+0.24+0.13+0.34
32Mack Hollins◦ provisionalLVWR94+0.33+0.24+0.13+0.34
33Tyler Boyd◦ provisionalCINWR85+0.34+0.24+0.13+0.34
34DJ Chark◦ provisionalDETWR52+0.41+0.24+0.13+0.34
35Kendall Hinton◦ provisionalDENWR33+0.50+0.24+0.13+0.34
36KhaDarel Hodge◦ provisionalATLWR21+0.65+0.24+0.13+0.34
37Devin Duvernay◦ provisionalBALWR49+0.40+0.24+0.13+0.34
38Richie James◦ provisionalNYGWR70+0.35+0.24+0.13+0.34
39Jahan Dotson◦ provisionalWASWR63+0.35+0.23+0.13+0.34
40Ray-Ray McCloud◦ provisionalSFWR25+0.50+0.23+0.12+0.34
41Keenan Allen◦ provisionalLACWR89+0.30+0.23+0.13+0.34
42George Kittle◦ provisionalSFTE86+0.46+0.23+0.11+0.35
43Kalif Raymond◦ provisionalDETWR64+0.33+0.23+0.13+0.34
44Byron Pringle◦ provisionalCHIWR16+0.56+0.23+0.12+0.34
45DeVante Parker◦ provisionalNEWR47+0.33+0.23+0.12+0.34
46Jalen Nailor◦ provisionalMINWR13+0.59+0.23+0.12+0.34
47Wan'Dale Robinson◦ provisionalNYGWR31+0.38+0.23+0.12+0.34
48Tom Kennedy◦ provisionalDETWR15+0.53+0.23+0.12+0.34
49Sammy Watkins◦ provisionalBALWR27+0.38+0.23+0.12+0.34
50Russell Gage◦ provisionalTBWR72+0.28+0.23+0.12+0.33
51Curtis Samuel◦ provisionalWASWR93+0.27+0.23+0.12+0.33
52Ashton Dulin◦ provisionalINDWR22+0.38+0.23+0.12+0.34
53Will Dissly◦ provisionalSEATE38+0.69+0.23+0.10+0.35
54Laviska Shenault Jr.◦ provisionalCARWR32+0.32+0.23+0.12+0.33
55Khalil Shakir◦ provisionalBUFWR21+0.37+0.23+0.12+0.34
56Kadarius Toney◦ provisionalKCWR20+0.37+0.23+0.12+0.34
57Cedrick Wilson Jr.◦ provisionalMIAWR18+0.38+0.23+0.12+0.34
58Kendrick Bourne◦ provisionalNEWR48+0.28+0.23+0.12+0.33
59Damiere Byrd◦ provisionalATLWR23+0.33+0.23+0.12+0.33
60Van Jefferson◦ provisionalLAWR44+0.27+0.22+0.12+0.33
61Christian Kirk◦ provisionalJAXWR134+0.24+0.22+0.12+0.32
62Alec Pierce◦ provisionalINDWR78+0.25+0.22+0.12+0.33
63Dyami Brown◦ provisionalWASWR14+0.35+0.22+0.12+0.33
64Keelan Cole◦ provisionalLVWR21+0.30+0.22+0.12+0.33
65K.J. Osborn◦ provisionalMINWR90+0.24+0.22+0.12+0.33
66Jauan Jennings◦ provisionalSFWR56+0.25+0.22+0.12+0.33
67Tre'Quan Smith◦ provisionalNOWR27+0.27+0.22+0.12+0.33
68David Sills◦ provisionalNYGWR17+0.29+0.22+0.11+0.33
69Jamal Agnew◦ provisionalJAXWR31+0.25+0.22+0.11+0.33
70Garrett Wilson◦ provisionalNYJWR147+0.23+0.22+0.12+0.32
71Darnell Mooney◦ provisionalCHIWR62+0.23+0.22+0.12+0.33
72Ja'Marr Chase◦ provisionalCINWR134+0.23+0.22+0.12+0.32
73Justin Watson◦ provisionalKCWR34+0.22+0.22+0.11+0.33
74Courtland Sutton◦ provisionalDENWR109+0.22+0.22+0.12+0.32
75Isaiah Hodgins◦ provisionalNYGWR49+0.22+0.22+0.11+0.33
76Josh Palmer◦ provisionalLACWR108+0.22+0.22+0.12+0.32
77DeAndre Carter◦ provisionalLACWR65+0.21+0.22+0.12+0.33
78Marquez Valdes-Scantling◦ provisionalKCWR81+0.21+0.22+0.12+0.32
79Rondale Moore◦ provisionalARIWR56+0.20+0.22+0.11+0.33
80Josh Reynolds◦ provisionalDETWR59+0.20+0.22+0.11+0.33
81Chris Olave◦ provisionalNOWR120+0.21+0.22+0.12+0.32
82River Cracraft◦ provisionalMIAWR14+0.10+0.22+0.11+0.33
83Skyy Moore◦ provisionalKCWR33+0.17+0.22+0.11+0.33
84Julio Jones◦ provisionalTBWR43+0.17+0.22+0.11+0.33
85Mike Evans◦ provisionalTBWR128+0.20+0.22+0.12+0.32
86Chris Godwin Jr.◦ provisionalTBWR145+0.21+0.22+0.12+0.32
87Greg Dortch◦ provisionalARIWR64+0.19+0.22+0.11+0.32
88Amari Rodgers◦ provisionalHOUWR26+0.14+0.22+0.11+0.33
89DeSean Jackson◦ provisionalBALWR17+0.10+0.22+0.11+0.33
90Corey Davis◦ provisionalNYJWR64+0.18+0.22+0.11+0.32
91Allen Robinson◦ provisionalLAWR52+0.17+0.22+0.11+0.32
92Donovan Peoples-Jones◦ provisionalCLEWR96+0.19+0.22+0.11+0.32
93Isaiah McKenzie◦ provisionalBUFWR65+0.17+0.22+0.11+0.32
94Jalen Reagor◦ provisionalMINWR13-0.01+0.22+0.11+0.33
95Rashod Bateman◦ provisionalBALWR28+0.09+0.22+0.11+0.32
96Tutu Atwell◦ provisionalLAWR35+0.12+0.22+0.11+0.32
97KJ Hamler◦ provisionalDENWR14-0.04+0.22+0.11+0.33
98Chig Okonkwo◦ provisionalTENTE47+0.51+0.22+0.09+0.34
99Zach Pascal◦ provisionalPHIWR19+0.02+0.22+0.11+0.32
100Jamison Crowder◦ provisionalBUFWR13-0.08+0.21+0.11+0.32
101Austin Hooper◦ provisionalTENTE60+0.44+0.21+0.09+0.34
102Trent Sherfield◦ provisionalMIAWR51+0.13+0.21+0.11+0.32
103Cooper Kupp◦ provisionalLAWR98+0.17+0.21+0.11+0.32
104Davante Adams◦ provisionalLVWR181+0.19+0.21+0.12+0.31
105Dee Eskridge◦ provisionalSEAWR13-0.15+0.21+0.10+0.32
106Kyle Philips◦ provisionalTENWR13-0.15+0.21+0.10+0.32
107Gabe Davis◦ provisionalBUFWR93+0.16+0.21+0.11+0.32
108Equanimeous St. Brown◦ provisionalCHIWR38+0.08+0.21+0.11+0.32
109Kenny Golladay◦ provisionalNYGWR17-0.10+0.21+0.10+0.32
110Marvin Jones◦ provisionalJAXWR81+0.14+0.21+0.11+0.32
111Evan Engram◦ provisionalJAXTE101+0.33+0.21+0.09+0.33
112Breshad Perriman◦ provisionalTBWR19-0.13+0.21+0.10+0.32
113Brandon Powell◦ provisionalLAWR32+0.00+0.21+0.10+0.32
114Michael Bandy◦ provisionalLACWR21-0.11+0.21+0.10+0.32
115Brock Wright◦ provisionalDETTE24+0.70+0.21+0.08+0.34
116Treylon Burks◦ provisionalTENWR54+0.07+0.21+0.10+0.32
117DJ Moore◦ provisionalCARWR118+0.15+0.21+0.11+0.31
118Hunter Renfrow◦ provisionalLVWR51+0.06+0.21+0.10+0.32
119Scott Miller◦ provisionalTBWR40+0.02+0.21+0.10+0.32
120Nick Westbrook-Ikhine◦ provisionalTENWR50+0.05+0.21+0.10+0.31
121Denzel Mims◦ provisionalNYJWR25-0.11+0.21+0.10+0.32
122Sterling Shepard◦ provisionalNYGWR24-0.13+0.21+0.10+0.32
123Chris Moore◦ provisionalHOUWR74+0.10+0.21+0.10+0.31
124Michael Pittman◦ provisionalINDWR142+0.15+0.21+0.11+0.31
125Allen Lazard◦ provisionalGBWR101+0.11+0.21+0.10+0.31
126Robert Woods◦ provisionalTENWR91+0.10+0.21+0.10+0.31
127Jordan Akins◦ provisionalHOUTE56+0.38+0.20+0.08+0.33
128Deebo Samuel Sr.◦ provisionalSFWR94+0.10+0.20+0.10+0.31
129Steven Sims◦ provisionalPITWR23-0.25+0.20+0.10+0.31
130Marcus Johnson◦ provisionalNYGWR23-0.27+0.20+0.09+0.31
131Adam Thielen◦ provisionalMINWR109+0.10+0.20+0.10+0.30
132Drake London◦ provisionalATLWR118+0.11+0.20+0.10+0.30
133Demarcus Robinson◦ provisionalBALWR75+0.05+0.20+0.10+0.31
134Elijah Moore◦ provisionalNYJWR65+0.02+0.20+0.10+0.31
135Phillip Dorsett◦ provisionalHOUWR40-0.09+0.20+0.09+0.31
136Tyquan Thornton◦ provisionalNEWR45-0.06+0.20+0.09+0.31
137Cam Sims◦ provisionalWASWR18-0.48+0.20+0.09+0.31
138David Njoku◦ provisionalCLETE80+0.31+0.20+0.08+0.32
139Marquez Callaway◦ provisionalNOWR32-0.19+0.20+0.09+0.31
140DeAndre Hopkins◦ provisionalARIWR98+0.07+0.20+0.10+0.30
141James Proche◦ provisionalBALWR17-0.57+0.20+0.09+0.31
142Brandin Cooks◦ provisionalHOUWR93+0.05+0.20+0.10+0.30
143Dawson Knox◦ provisionalBUFTE65+0.31+0.20+0.08+0.32
144Nico Collins◦ provisionalHOUWR66-0.02+0.20+0.09+0.30
145Hayden Hurst◦ provisionalCINTE68+0.30+0.20+0.08+0.32
146Michael Gallup◦ provisionalDALWR74-0.01+0.20+0.09+0.30
147Braxton Berrios◦ provisionalNYJWR32-0.28+0.20+0.09+0.30
148Noah Fant◦ provisionalSEATE63+0.30+0.20+0.07+0.32
149Romeo Doubs◦ provisionalGBWR67-0.04+0.20+0.09+0.30
150Jarvis Landry◦ provisionalNOWR40-0.19+0.20+0.09+0.30
151Brandon Johnson◦ provisionalDENWR14-0.92+0.20+0.09+0.30
152Robbie Chosen◦ provisionalARIWR44-0.16+0.20+0.09+0.30
153Noah Gray◦ provisionalKCTE34+0.38+0.19+0.07+0.32
154C.J. Uzomah◦ provisionalNYJTE27+0.42+0.19+0.07+0.32
155Donald Parham◦ provisionalLACTE12+0.68+0.19+0.06+0.32
156Mitchell Wilcox◦ provisionalCINTE18+0.52+0.19+0.06+0.32
157Ben Skowronek◦ provisionalLAWR61-0.09+0.19+0.09+0.30
158Joseph Fortson◦ provisionalKCTE13+0.63+0.19+0.06+0.32
159Shi Smith◦ provisionalCARWR42-0.22+0.19+0.09+0.30
160David Bell◦ provisionalCLEWR35-0.32+0.19+0.08+0.30
161Noah Brown◦ provisionalDALWR75-0.05+0.19+0.09+0.30
162Jack Stoll◦ provisionalPHITE14+0.57+0.19+0.06+0.32
163Eric Tomlinson◦ provisionalDENTE13+0.56+0.19+0.06+0.32
164Adam Trautman◦ provisionalNOTE22+0.39+0.19+0.06+0.32
165DK Metcalf◦ provisionalSEAWR142+0.05+0.19+0.09+0.29
166MyCole Pruitt◦ provisionalATLTE21+0.39+0.19+0.06+0.32
167Daniel Bellinger◦ provisionalNYGTE36+0.30+0.19+0.06+0.31
168Mark Andrews◦ provisionalBALTE114+0.22+0.19+0.07+0.30
169Colby Parkinson◦ provisionalSEATE34+0.30+0.19+0.06+0.31
170Jake Ferguson◦ provisionalDALTE22+0.36+0.19+0.06+0.32
171Chase Claypool◦ provisionalCHIWR79-0.07+0.19+0.08+0.29
172Juwan Johnson◦ provisionalNOTE65+0.24+0.19+0.06+0.31
173Dan Arnold◦ provisionalJAXTE13+0.45+0.19+0.06+0.32
174Quez Watkins◦ provisionalPHIWR51-0.25+0.18+0.08+0.29
175Nelson Agholor◦ provisionalNEWR53-0.24+0.18+0.08+0.29
176Hunter Henry◦ provisionalNETE59+0.23+0.18+0.06+0.31
177Marquise Brown◦ provisionalARIWR107-0.03+0.18+0.08+0.29
178Dante Pettis◦ provisionalCHIWR42-0.39+0.18+0.07+0.29
179Johnny Mundt◦ provisionalMINTE21+0.26+0.18+0.05+0.31
180Parris Campbell◦ provisionalINDWR92-0.09+0.18+0.08+0.28
181Connor Heyward◦ provisionalPITTE17+0.24+0.18+0.05+0.31
182Josiah Deguara◦ provisionalGBTE15+0.23+0.18+0.05+0.31
183Shane Zylstra◦ provisionalDETTE15+0.23+0.18+0.05+0.31
184Trey McBride◦ provisionalARITE39+0.20+0.18+0.05+0.30
185Josh Oliver◦ provisionalBALTE25+0.20+0.18+0.05+0.31
186Taysom Hill◦ provisionalNOTE13+0.20+0.18+0.05+0.31
187A.J. Green◦ provisionalARIWR49-0.37+0.18+0.07+0.28
188Anthony Firkser◦ provisionalATLTE13+0.19+0.18+0.05+0.31
189Tanner Hudson◦ provisionalNYGTE15+0.19+0.18+0.05+0.31
190Teagan Quitoriano◦ provisionalHOUTE14+0.16+0.18+0.05+0.31
191Cole Kmet◦ provisionalCHITE70+0.16+0.17+0.05+0.29
192Foster Moreau◦ provisionalLVTE54+0.16+0.17+0.05+0.30
193Ian Thomas◦ provisionalCARTE30+0.13+0.17+0.05+0.30
194Jelani Woods◦ provisionalINDTE40+0.13+0.17+0.05+0.30
195Diontae Johnson◦ provisionalPITWR149-0.03+0.17+0.07+0.27
196Darren Waller◦ provisionalLVTE44+0.11+0.17+0.04+0.29
197Zach Ertz◦ provisionalARITE71+0.12+0.17+0.05+0.29
198Durham Smythe◦ provisionalMIATE20-0.04+0.16+0.04+0.29
199Harrison Bryant◦ provisionalCLETE43+0.07+0.16+0.04+0.29
200Geoff Swaim◦ provisionalTENTE16-0.11+0.16+0.03+0.29
201Zach Gentry◦ provisionalPITTE23-0.06+0.16+0.03+0.29
202Albert Okwuegbunam◦ provisionalDENTE18-0.13+0.16+0.03+0.29
203Cade Otton◦ provisionalTBTE65+0.08+0.16+0.04+0.28
204Jonnu Smith◦ provisionalNETE38+0.01+0.16+0.03+0.29
205Pharaoh Brown◦ provisionalCLETE20-0.12+0.16+0.03+0.29
206O.J. Howard◦ provisionalHOUTE23-0.09+0.16+0.03+0.29
207Peyton Hendershot◦ provisionalDALTE16-0.20+0.16+0.03+0.29
208Kyle Pitts◦ provisionalATLTE59+0.06+0.16+0.04+0.28
209Mo Alie-Cox◦ provisionalINDTE28-0.06+0.16+0.03+0.29
210Mike Gesicki◦ provisionalMIATE53+0.04+0.16+0.03+0.28
211John Bates◦ provisionalWASTE22-0.13+0.16+0.03+0.29
212Pat Freiermuth◦ provisionalPITTE98+0.09+0.16+0.04+0.27
213Eric Saubert◦ provisionalDENTE24-0.12+0.16+0.03+0.29
214Robert Tonyan◦ provisionalGBTE67+0.06+0.16+0.04+0.28
215Tommy Tremble◦ provisionalCARTE32-0.05+0.16+0.03+0.28
216Kylen Granson◦ provisionalINDTE40-0.02+0.16+0.03+0.28
217Greg Dulcich◦ provisionalDENTE55+0.01+0.15+0.03+0.28
218Lawrence Cager◦ provisionalNYGTE20-0.26+0.15+0.02+0.28
219Tre' McKitty◦ provisionalLACTE18-0.31+0.15+0.02+0.28
220Irv Smith◦ provisionalMINTE36-0.12+0.15+0.02+0.27
221Tyler Conklin◦ provisionalNYJTE87+0.03+0.15+0.03+0.27
222Gerald Everett◦ provisionalLACTE88+0.03+0.15+0.03+0.26
223Tyler Higbee◦ provisionalLATE108+0.05+0.15+0.03+0.26
224Dalton Schultz◦ provisionalDALTE89-0.00+0.14+0.02+0.26
225T.J. Hockenson◦ provisionalMINTE131+0.04+0.14+0.03+0.25
226Isaiah Likely◦ provisionalBALTE60-0.09+0.14+0.01+0.26
227Logan Thomas◦ provisionalWASTE61-0.14+0.13+0.01+0.25
228Cameron Brate◦ provisionalTBTE38-0.31+0.13+0.00+0.25
229Brevin Jordan◦ provisionalHOUTE28-0.49+0.13-0.00+0.25

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