I over-pay for young receivers. Not the ones who actually catch passes.
What the consensus says
Every dynasty offseason runs on the same fuel: youth. Buy the 22-year-old, age is just a number at receiver, and start fading anyone the wrong side of 27. Footballguys builds its dynasty receiver tiers around exactly that age line, flagging the 27-year-old vets as the discount aisle. RotoBaller's post-draft rookie board treats this WR class as the strongest position in the draft, eight receivers off the board in two rounds, every one of them a buy on draft capital alone. Footballguys' value-riser column and Justin Boone's Yahoo trade charts both lean on the word "ascending," and the Fantasy Footballers spend a whole range-of-outcomes segment on the young class. One bet underneath all of it: a young receiver is worth more than his current production, because the production is coming.
I have a reason to care beyond the discourse. My own error report, the one that grades old rankings against what actually happened over the next three seasons, flagged receivers age 23 and under as a place SignalTuned over-rates players, by about 41 board spots among the ones it ranks inside the top 100. So I went looking for the young-receiver bust in my own board.
The claim, in plain English
Take every receiver season with a real role and pair it to the next year. Flag the ones who walk into that next season at age 23 or younger, the ascenders the engine pays a youth premium for. Then ask whether they fall short of older receivers doing the exact same volume.
def predicate(row) -> bool:
# in-cohort = enters Y+1 at age 23 or younger
return row["age_at_y1_start"] <= 23.0
The control is the whole game. Young receivers who already produce will score, of course they will. The useful question is not "are they good," it is "are they better or worse than a 27-year-old with the same target share." Hold the role fixed and the only thing left moving is the age.
How I beat on it
scripts/h59_young_wr_age_premium.py builds Y-to-Y+1 pairs from player_stats_season.csv (REG, WR, 2015 through 2024 Y0 with Y+1 reaching 2025, at least six games and 40 targets so the role is real), then bands every pair by Y0 target share. n = 681 paired seasons. Scored under the 10-team superflex half-PPR the engine calibrates to. Full framework: the Session 97 two-gate spec.
What the data actually said
First swing, the over-rating just is not there. The age-23-and-under group averaged 9.86 points a game the next year against 9.48 for everyone older, and they did it starting from a lower base, 9.06 in their Y0 versus 9.85. So the young receivers gained ground. The opposite of a bust.
Because aggregates lie, hold target share fixed and watch the kids hold up band by band:
| Y0 target share | Young (<=23) Y+1 ppg | Older Y+1 ppg | n (young / older) | Delta |
|---|---|---|---|---|
| 0.25+ alpha | 10.98 | 12.28 | 3 / 134 | -1.30 |
| 0.20 to 0.25 | 11.67 | 10.46 | 9 / 181 | +1.21 |
| 0.16 to 0.20 | 10.87 | 8.73 | 7 / 150 | +2.14 |
| 0.12 to 0.16 | 7.95 | 7.29 | 6 / 133 | +0.66 |
| 0.08 to 0.12 | 7.69 | 6.76 | 7 / 47 | +0.93 |
Four of the five testable bands tilt the young receivers' way, two of them past two full points a week. Drop the role floor to 25 targets and the lean only firms up, plus 0.65 a week in aggregate. The one red cell, the alpha tier, is three players deep. Gate 1 fails, and not because the effect is a wash like the touchdown stuff was: it fails because the young column never reaches ten players in a single band. Read that number again. Across ten seasons, only 32 receivers in the whole sample walked into a Y+1 at age 23 or younger with a genuine prior-year role. That scarcity is not a footnote. It is the finding.
What the engine already figured out
The engine is the one paying the premium. Its WR age curve climbs toward a peak at 26, young receivers keep the full seven-season value horizon, and the rookie development ramp marks them up on top. The audit says all of that over-rates the under-24 crowd, and this test just ruled out the obvious reason. At the same target share, the young receivers who actually earn targets are not busts. They are slightly the better bet.
So where is the leak. It is in the 32 versus everyone else. The engine ranks dozens of 22-year-olds inside the top 100 on draft capital and projected opportunity, and most of them never clear a 40-target role, so they never enter a controlled test like this one. The over-rating lives entirely in the targets the engine projects and the player never gets. That makes four straight archetypes my own audit flagged, after pocket-passer quarterbacks, the big-fast backs, and receiving tight ends, where the error turned out to sit in board placement and opportunity projection, not in the position's own curve. A pattern that consistent is the actual work order now.
What to do about it
For your roster: do not flinch off a young receiver who is already commanding targets. At equal opportunity he is the slightly better hold than the veteran, every band but the three-man alpha tier says so. The risk you are actually carrying is the other kind of young receiver, the one priced for a target share he has not earned yet. Youth is not the edge. Earned youth is.
Engine-side, this one ships no change. Shaving the age curve to match the audit would punish exactly the wrong group, the young receivers the data just vindicated. The real fix is a board-level question, how the engine prices projected opportunity for unproven young receivers against the realized-value tiers below them, and that goes to the warm loop where placement questions belong, not to an age-curve knob. Fourth negative result in the same series, filed and published. The trap that fooled my own audit: it counted the busts the cohort can't see and blamed the survivors it can.