SignalTuned SignalTuned

Rankings tuned to the signal, not the noise.

Need help?Sign in
RB2026-06-01

They told you yards per carry is noise. The workhorses didn't get the memo.

What the consensus says

The running back room is talking out of both sides of its mouth this month. One side sells you the explosive-runner sleeper: RotoBaller's dynasty column pitches Nicholas Singleton on his 4.35 speed and "home-run plays," PlayerProfiler's breakout list leans on efficiency profiles, and the knock on Chuba Hubbard everywhere is that he ranked "dead last in explosive run rate." Efficiency is the whole argument, right up until it isn't. Then the same group chat, an hour later, waves all of it off with the analytics catchphrase: yards per carry is noise, it doesn't persist, fade it, chase volume. NBC and Athlon both anchor their RB takes to workload and shrug at the per-carry stuff.

Pick a lane. Either a great rushing season is a signal you can bet next year, or it is last year's variance wearing a costume. It cannot be both. That is falsifiable, so I tested it.

The claim, in plain English

def predicate(row) -> bool:
    """In-cohort = elite efficiency: top-quartile yards per carry."""
    return row["ypc"] >= 4.65   # rushing_yards / carries, top 25% of qualified backs

A back is in cohort if his yards per carry lands in the top quartile of qualified seasons, which is 4.65 and up. The claim on trial: that edge is real and it carries into the next year. The catch, like always, is the control. Efficient backs skew a little toward bigger workloads, so a naked comparison quietly smuggles volume into the answer. The honest question is whether the per-carry edge still pays at the same total touch count. Touches are the whole game here.

How I beat on it

scripts/h52_rb_yards_per_carry_persistence.py builds Y to Y+1 pairs from player_stats_season.csv (REG only, RB, 2015-2024 Y0, Y+1 reaches 2025, at least 6 games and 50 carries in both years). I band every pair by Y0 total touches (carries plus targets), then inside each band I put the top-quartile-YPC backs up against everyone else on next-year ppg. Scored under half-PPR. Full framework: Session 97 two-gate spec. 457 pairs, 132 of them in the efficient cohort.

What the data actually said

First swing, straight up: the efficient backs averaged 2.17 ppg more in Y+1 than the rest. Real gap. But aggregates lie, and the obvious worry was that efficient backs just hoard the big workloads. Turns out they do not, much. Yards per carry and total touches correlate at only 0.18, so banding by workload cleans the comparison without gutting the sample. Split it out:

Y0 total touches n_in in ppg n_out out ppg delta
300+ workhorse 24 16.88 52 12.85 +4.02
250-300 23 13.84 46 11.14 +2.70
200-250 25 11.40 74 10.14 +1.26
150-200 21 10.18 60 9.25 +0.93
100-150 25 9.32 56 7.40 +1.92
<100 14 8.13 37 6.97 +1.16

Positive in all six bands. Not some bands. All six. And the lift does not shrink at the top; it detonates. At a true workhorse load of 300-plus touches, the efficient back beats the grinder by 4.02 ppg the following season. Same carries, four points a week. That is the gap between a lock RB1 and a guy you agonize over in tough matchups.

The durability story is just as sharp. Those efficient backs went from 12.32 ppg in Y0 to 11.89 in Y+1, a regression of 0.44 ppg. Nearly nothing. The "it was all variance, it collapses next year" narrative simply does not show up in the data. Efficient production at a full workload is not a hot streak. It is a skill, and the cohort held it. The "yards per carry is noise" crowd is the one holding the bag.

What the engine already figured out

Here is the rare one where the consensus alarmists were wrong and the engine was already quietly right. SignalTuned does not treat per-carry production as luck. Its epa_efficiency layer puts a bounded forward modifier on a back's weighted ppg based on his per-touch EPA, and the config note says it plainly: "per-touch EPA there is sticky." For running backs that modifier runs at full strength (scale 0.06) precisely because the signal holds. Receiver and tight end efficiency get throttled to a third of that, because there it mostly is noise. The engine made the exact bet the cohort just validated.

One caveat, flagged not buried: the engine reads EPA per touch, not raw yards per carry, and the path from a z-scored EPA to a points adjustment is capped at six percent and is not legible from the config alone. The direction is right. Whether six percent is large enough to capture a four-point gap at workhorse volume is a magnitude question, and that goes to the warm loop, not a guess today.

What to do about it

For your roster: stop reflexively fading the efficient workhorse as a regression candidate. A back who ran for 4.7-plus a pop on a full workload is not "due to come back to earth." He is the safer bet to repeat than the same-volume grinder, by two to four points a week depending on how big the load is. The efficiency is information, not a mirage. When the group chat calls him a regression risk, that is not analysis. That is a folk theorem that the data does not support.

Engine-side, this is a confirms_existing verdict: no diff, no live ranking change today. The engine already encodes RB efficiency persistence, and the cohort says it was right to. The only open thread is whether the dial is turned far enough at the very top of the workload curve, and that is a calibration question for the warm loop to settle with a real walk-forward residual, not something to eyeball in a discovery cycle.

Receipts


Back to all posts