Most fantasy ranking tools play the same trick. They poll a panel of experts, average the guesses, and call the result objective. It isn't. You're inheriting whichever biases that panel happened to share, and “consensus” lags real signal by months. SignalTuned doesn't do that. It looks at what NFL players actually did on the field (yards, targets, snaps), runs the math your league actually uses (your PPR setting, your TE premium, your SuperFlex), and adjusts for age because a 22-year-old WR and a 30-year-old WR putting up the same numbers are very different bets. That's the whole engine. No vibes, no expert panels, no “feels like” rankings.
Most fantasy tools poll experts and average the results. The good ones do that transparently. The rest hide behind black-box “AI.” Either way you inherit whichever biases the panel happened to share, and consensus lags real signal by months. SignalTuned derives every ranking from production data and your league's exact scoring. No experts polled. No consensus consulted.
The engine reads your Sleeper league's exact settings and reruns the math against them. Half-PPR, full PPR, TE premium, big-play bonuses, SuperFlex, custom reception values. A WR ranked 15th in standard scoring can be 8th in a TE-premium SuperFlex league. The numbers actually move when your scoring changes, instead of pretending one set of rankings fits every league.
After every NFL season, the engine compares its projections to what really happened on the field. Age curves, archetype thresholds, and signal weights re-fit against the new data. Between seasons, an autonomous research agent runs every other day and tests recurring fantasy claims against historical data. Results go on The Lab, including the hypotheses the engine rejects.
Every ranking carries a manifest hash that fingerprints the engine version, config, and input data that produced it. Past seasons stay frozen. If you can't trace a number back to its inputs, that's a bug, not a feature. Check accuracy for the receipts and model card for the full version history.
For every player, the engine produces three numbers. They answer different questions, and the rankings page surfaces all three so you don't have to pick one.
A points-per-game scaled readout of the engine's lifetime-value sum (LTV) for that player. The engine sorts on LTV; dynasty_ppg is the per-game view of the same number. Current production, position-specific age curve, archetype, and the forecast horizon all flow in.
Players get grouped into tiers by detecting where the dynasty_ppg distribution actually breaks. Tier 1 is the elite cluster. Tier 6+ is replacement-level. Tier boundaries get recomputed for every league because they depend on the scoring system.
Each ranking carries a HIGH, MEDIUM, or LOW confidence flag based on sample size, year-over-year consistency, and age-curve position. A rookie's ranking has a wider band than a five-year veteran's, even at the same dynasty_ppg. The band gets shown on the player card.
Everything in the engine traces back to one of these four buckets. Nothing else gets in.
Per-season fantasy points computed at your league's scoring. Snap counts, target share, route participation, carries and air yards, red-zone usage, rank within position. All drawn from public nflverse play-by-play data going back to 1999.
Position-specific age curves (RBs decline fastest, WRs plateau longest, QBs and TEs peak late) modified by archetype. A 230-lb dual-phase RB like Saquon Barkley ages slower than a pure power back. A possession WR ages differently than a deep-threat WR. The curves and thresholds got built from real NFL production data, not guessed at.
The engine reads your league's exact rules from Sleeper and reruns the math against them. PPR value, TE premium, big-play bonuses, SuperFlex, custom reception values. Your tier breakpoints depend on your scoring, so they get computed fresh for every league.
After each NFL season, age curves, archetype thresholds, and signal weights re-fit against what actually happened. Every parameter change gets logged with the reason it shipped on the model card.
The hero diagram above shows what goes in and what comes out. Here's what happens in between, box by box.
weighted_ppg, the engine's best estimate of where the player is right now. Older seasons inform the projection without dominating it.weighted_ppg gets multiplied by the age-curve factor for that age and a discount of 0.92i (future seasons are worth less because of uncertainty and time value). Sum them and you get LTV. Normalize to PPG scale and you get dynasty_ppg.dynasty_ppg runs through tier formation and you get the ranked list.Different positions peak at different ages. RBs around 23 (the body breaks down fastest), WRs around 26, TEs around 25 followed by a long plateau into the late 20s, QBs around 29-30 (the latest peak). Calibrated from real NFL production, not guessed.
RBs peak around 23 — the body breaks down faster. WRs around 26. TEs around 25, followed by a long plateau into the late twenties. QBs the latest, around 29–30. Every curve is calibrated from real NFL production — not guessed.
Each position ages on its own clock. RBs decline fastest because the position takes the most contact. By age 30 the average RB has lost about a third of his peak production. WRs survive longer because route running and chemistry compound with experience, so a 32-year-old elite WR can still be a starter. QBs peak latest because the position is cognitive, not athletic, and reading defenses takes years. TEs peak early but stay productive a long time: blocking, route running, and red-zone craft take years to develop, so a TE's peak window stretches from the mid-20s into the late 20s before the body starts to lose to younger receivers.
The curves got built from median per-game production at each (position, age) bin across NFL seasons going back to 1999, the full window the engine maintains data for. Median instead of mean so a single outlier like a 38-year-old Tom Brady doesn't drag the QB curve into “QBs peak at 40.” For age bins with small sample sizes, the engine applies a position-specific floor because the few RBs who reach age 30 in the league are the survivors and would otherwise look too good.
Not all RBs are alike. A 230-lb dual-phase back ages differently than a pure receiving back. Each player gets classified into an archetype and the engine applies the archetype-specific age curve.
| Archetype | Criteria | How they age |
|---|---|---|
| Dual-phase back | Weight ≥ 215 lbs AND elite combine speed score | Slowest decline. Size plus speed sustains production deep into the late 20s. McCaffrey, Saquon, Bijan, Gibbs. |
| Power back | Weight ≥ 220 lbs without elite speed | Steepest decline. Volume-dependent, takes the most contact per carry. Derrick Henry-type usage ages aggressively. |
| Receiving back | Target share ≥ 13% of team targets | Most sustainable. The passing-game role survives the loss of athletic peak. Ekeler, Kamara archetype. |
| Standard | Default if none of the above | Average decline curve. The middle of the bell. |
| Archetype | Criteria | How they age |
|---|---|---|
| Speed threat | Speed Score ≥ 108, OR aDOT ≥ 14 plus YAC per reception ≥ 6.0 | Speed-dependent production. Burst erodes the fastest of any WR skill, so this archetype has the steepest post-peak decline. |
| Route runner | Catch rate ≥ 68%, OR target share ≥ 22% with catch rate ≥ 60% | Technique and precision. Route running ages best of all WR skills. QB trust and separation survive the loss of athletic peak. |
| Slot receiver | aDOT < 8 AND weight < 210 lbs | Short-area possession role. Space-creation and release technique age similarly to route-running. Stable year-over-year floor. |
| Contested catch | Weight ≥ 210 lbs (and doesn't qualify above) | Size-based advantage at the catch point. Holds value longer than speed threats because the body wins one-on-ones even after the legs go. |
| Standard | Default if none of the above | Average WR decline curve. The middle of the bell. |
Two RBs with identical age and production can still get meaningfully different dynasty_ppg outputs if one is dual-phase and the other is a pure power back. The archetype tells the engine which curve to use. The deep math behind the speed-score formula (weight times 200, divided by 40-yard-dash time to the fourth) goes back to Bill Barnwell's 2008 Football Outsiders work; the burst-score and dominator-rating concepts come from PlayerProfiler conventions.
Rookies are the hardest call in any dynasty model. No NFL production exists yet. The engine handles this by looking at how past rookies with similar profiles actually turned out, then adjusting for the combine numbers and college production. Nothing fitted, everything grounded in real outcomes.
projected_peak_ppg = bucket_baseline + combine_delta + college_delta
The bucket baseline is the median peak production of past rookies who landed in the same (position, draft-pick-bucket) cell. Six pick buckets aligned to NFL draft rounds: top-15, late round 1, round 2, round 3, rounds 4 and 5, and round 6 through UDFA. The combine delta adjusts up or down based on z-scored speed score and burst score against the bucket average. The college delta does the same with college production signals (dominator rating and yards-per-target for receivers, yards-per-team-play and yards-per-carry for RBs).
If a measurable is missing, its delta is zero and the confidence band widens. Two example profiles, both rookies entering next September:
Bucket: top-15 WR. The baseline pulls from past top-15 WRs (a cohort that includes Justin Jefferson, Ja'Marr Chase, CeeDee Lamb). The median peak sits high.
Stack a positive combine delta (above-average speed plus burst) and a positive college delta (dominator rating north of 35 percent, strong yards per target) on top. The engine returns a confident projection in a narrow band.
Bucket: rounds 4 and 5 WR. The baseline is low because most Day 3 WRs don't break out. The cohort has more misses than hits.
The combine delta is positive and meaningful (top-decile speed plus burst pushes the projection up by 2 to 3 ppg). The college delta is roughly zero. Net: the projection lands above the bucket median, but the confidence band stays wide.
The engine grades itself every year. Walk-forward backtest: for each held-out year (currently 2022, 2023, 2024), the engine reruns with training data only from earlier seasons, then gets compared to what actually happened. The 2022 prediction sees no 2022 data. The 2024 prediction sees no 2024 data. Honest accuracy, no leakage.
| Position | MAE (PPG) | Correlation | Bias |
|---|---|---|---|
| QB | 3.96 | 0.455 | +0.89 |
| RB | 3.07 | 0.645 | +0.78 |
| WR | 2.53 | 0.753 | +1.65 |
| TE | 2.06 | 0.723 | +0.51 |
Three-year out-of-sample average (2022, 2023, 2024 held-out backtests). MAE is mean absolute error in fantasy points per game (lower is better). Correlation is the relationship between projected and actual ranking (closer to 1.0 is better). Bias is the average over/under (positive means the engine projected high). WR MAE at 2.53 lands comfortably below the industry-competitive sub-4.0 PPG benchmark. See the live accuracy page for the per-year breakdown plus volume-weighted variants.
Every off-season, three sets of parameters re-fit against the new data. Age curves get recomputed at each (position, age) bin. Signal weights get re-fit through a LASSO residual ensemble. Archetype thresholds get checked for separation strength. If a boundary no longer carves a real performance gap, it gets revised. Every change ends up on the model card with the reason it shipped and the accuracy review that validated it. Recalibrations are proposals, not auto-applied.
The engine clips the LTV horizon for aging veterans because production drops fast past certain age thresholds. A 35-year-old TE doesn't get credit for seven future seasons; he gets credit for two or three. That's why Travis Kelce, Matthew Stafford, and Davante Adams rank lower here than on consensus boards that treat every season in the horizon as equally likely. The cutoffs came out of the historical decline curves, not chosen by feel.
I'm Ryan. I built SignalTuned because I got tired of arguing with consensus rankings. Every season I'd run the math on my own and end up with different rankings than FantasyPros or KeepTradeCut, and every season I'd win trades by trusting the math over the consensus. After enough years of that pattern, building a tool that just does the math seemed obvious.
The whole thing started as a spreadsheet for my dynasty league. It became a private tool for me and a handful of friends after a few seasons of consistent A/B wins against consensus. Now anyone can use it.
If you find a bug, want a feature, or have a hypothesis you want tested, email me at [email protected]. There's no support queue. Every email comes to me personally.