Kings of Dynasty

Fantasy Football · Updated June 13, 2026 at 12:28 PM UTC · Default format: Superflex PPR

v2.2 Methodology — Fantasy-Point Arc + Penalty Stack

v1.x ranked players by per-stat z-score shape — "who do their counting stats look like?" That structurally buried elite dual-threats like Josh Allen because z-scoring is scale-invariant within era and ignored that a rushing TD scores 6 points. v2.0 replaces the engine: players are matched by their fantasy production curves under modern scoring, then projected forward against historical players with similar curves.

1 · Era-pace pre-adjustment of historical stats

Before any scoring or similarity math, every historical season's raw stat line is multiplied by an empirically-calibrated position+stat+era_from→Era-4 ratio. A 2010 Peyton Manning passing-yards total becomes "what would this season produce if it happened today". The full table:

PosStatEra 1→4Era 2→4Era 3→4Era 4→4
QBinterceptions0.68×0.76×0.88×1.00×
QBpassing_tds1.11×1.02×0.87×1.00×
QBpassing_yards1.06×0.98×0.85×1.00×
QBrushing_tds1.60×1.25×1.60×1.00×
QBrushing_yards1.61×1.55×1.21×1.00×
RBreceiving_tds1.20×1.15×1.10×1.00×
RBreceiving_yards0.70×0.98×0.79×1.00×
RBreceptions0.76×0.98×0.83×1.00×
RBrushing_tds0.96×1.07×1.07×1.00×
RBrushing_yards0.91×0.94×1.00×1.00×
WRreceiving_tds0.69×0.90×0.90×1.00×
WRreceiving_yards0.67×0.86×0.88×1.00×
WRreceptions0.80×0.88×0.94×1.00×
WRrushing_yards1.00×1.00×1.00×1.00×
TEreceiving_tds0.94×0.94×0.94×1.00×
TEreceiving_yards0.82×1.00×0.91×1.00×
TEreceptions0.92×1.04×0.97×1.00×

Source: empirical_snapshot · multipliers derived from the median per-game rate within each era × position × stat cell, clamped to [0.6, 2.0].

2 · Fantasy-point arc corpus

Era-adjusted stats are run through Superflex PPR scoring (plus sf_ppr, 1qb_ppr, 2qb_ppr, half_ppr, std, sf_te_premium variants) to produce a fp_per_game arc for every player-season. The result is a per-player, per-format career arc in MODERN-fp-equivalent units — completely free of stat-shape distortion.

3 · The long-arc corpus

The comp pool is restricted to long-arc players: retired through 2022 OR 8+ NFL seasons OR 33+ years old with 6+ seasons. Long-arc active veterans (Rodgers, Stafford, Russell Wilson) contribute only their COMPLETED seasons — the in-progress season never leaks.

4 · Fantasy-arc similarity vector (10-dim, in fp units)

  1. v[0] = fp/g at the current age (weight 1.0)
  2. v[1] = fp/g at age-1 (weight 0.7)
  3. v[2] = fp/g at age-2 (weight 0.5)
  4. v[3] = career-avg fp/g through current age
  5. v[4] = peak-3yr-avg fp/g through current age
  6. v[5] = peak-single-season fp/g (any age through current)
  7. v[6] = career-total fp through current age (scaled / 100)
  8. v[7] = trajectory slope (fp/g per career-season)
  9. v[8] = durability (games / possible_games)
  10. v[9] = career-stage fp percentile within position

Similarity is feature-importance-weighted inverse-distance (not cosine because we want magnitude to matter): two players with similar fp/g production trajectories under modern scoring are similar, regardless of how they earned those points.

5 · Projection pipeline

  1. For an active player at age A, find top-20 long-arc comps at same position, age ±1, career-stage ±1, ranked by feature-weighted similarity.
  2. For each comp, sum their realised post-age fantasy points under the target format (already in modern-fp units — era-pace was applied at corpus build).
  3. Time-discount 5%/year, similarity-weight, sum → comp_weighted_fp.
  4. Compute peak_anchored_fp = target's projection-rate × 17 games × expected remaining years × mid-life discount factor. Projection-rate = max(recent_3yr × 1.10, peak_3yr × 0.90) — blends current form with all-time ceiling so a single down year doesn't crash a proven star.
  5. Take max(comp_weighted_fp, peak_anchored_fp) when the target's peak-3yr clears the elite tier (QB ≥18, RB ≥15, WR ≥16, TE ≥12). Sub-elite players fall back to comp-weighted.
  6. For mobile / dual-threat QBs, multiply by 1.05–1.10 (modern medicine continues to extend mobile-QB careers; lift on projected years remaining matches v1.1 at up to 1.50× for display).

6 · v2.2 penalty stack — survival, confidence, late breakout

v2.0/v2.1 projected forward by similarity-weighting comps' realised post-snapshot fantasy points. That left three known overrates: small-sample players got full credit for limited NFL data, players with bust-prone comp pools got no penalty for the pool's collapse rate, and late-breakout QBs were rewarded for "years remaining" the empirical record says they rarely cash in.

v2.2 composes three multiplicative penalties on top of the v2.0/v2.1 raw projection:

  1. Survival multiplier. For each player's top-20 comp pool, compute bust_rate (fraction of comps who retired by age 30 with <8 NFL seasons) and short_career_rate (≤5 NFL seasons). Multiplier = (1 - bust)×0.20 + (1 - short)×0.10 + 0.70, floored at 0.65 and capped at 1.0. Clean comp pools (Allen, Mahomes, Hurts, Lamar) score 1.0; bust-heavy pools (Anthony Richardson) score 0.78–0.92.
  2. Confidence shrinkage. Career NFL starts /32 caps at 1.0 (≈2 full seasons = full confidence). QBs under 16 career starts are additionally capped at 0.5. Above-baseline projections are pulled toward the position-tier median; below- baseline projections are straight-multiplied by confidence (no artificial lift). Sample-of-15 starts (Anthony Richardson) = confidence 0.47.
  3. Late-breakout penalty (QB only). Multiplier keyed to the QB's first NFL season with ≥250 pass attempts or ≥10 games as primary starter:
    • breakout_age ≤ 22: 1.00 (no penalty)
    • breakout_age = 23: 0.95
    • breakout_age = 24: 0.88
    • breakout_age ≥ 25: 0.80
    Confidence-weighted: low-NFL-sample 2nd-year QBs (Daniels, 24 starts) take a softer share than established late-breakouts (Bo Nix, 34+ starts). Empirical: see LATE-BREAKOUT-QBs.md.

Stack composition order: raw → ×survival → ×confidence + baseline×(1−conf) → ×late_breakout. Floored at 0.20×raw and capped at 1.00×raw — penalties are penalties, not lifts. Per-player diagnostics (bust_rate, durable_career_rate, breakout_age, confidence) are saved to data/diagnostics/v2.2_*.json.

7 · Why this is dynasty-appropriate

Dynasty value is the projected lifetime fantasy points a player will score for your roster. v1.x's stat-shape matching answered a different question ("what shape of NFL career does this player project to have?") which correlated imperfectly with fantasy production. v2.0 measures the thing we actually care about directly: fantasy points produced under modern scoring.

8 · Format overlay

The base Similarity Scores page uses Superflex PPR. The Dynasty Rankings page reads per-format fp totals directly from the pre-computed arc corpus (no re-scoring needed) and recomputes positional VORP baselines under the target roster rules. v2.2 keeps two preset formats: Superflex PPR and 2QB PPR.

9 · v3.0 Prospect Engine — PRs 3 + 4 + 5 + 6

v3.0 adds a college→NFL similarity layer on top of the v2 NFL production engine. Skill-position college prospects are compared against a 2000+ college corpus using era-pace-adjusted, conference-tier-weighted fp/g curves. Each prospect's top-25 college comps are then bridged to NFL outcomes (where the comp eventually played) to project the prospect's career fantasy points and peak3 fp/g.

  1. PR 3 — similarity engine. 10-dim career-stage feature vector keyed to age + career-stage length. Distance is feature-importance weighted; the comp pool is the v3.0 prospect corpus (≈5k college skill-position players, 2000-present).
  2. PR 4 — projection layer. For each comp with an NFL career, the engine pulls career_fp and peak3_fp_pg, then similarity-weights them into a per-prospect projection. Comps without NFL data (washed out of CFB → never bridged) feed the survival multiplier instead.
  3. PR 5 — back-test. Position-aware gates against the 2017–2021 holdout classes (now mostly NFL-resolved). Results below.
  4. PR 6 — prospects UI ship. This page + per-prospect pages + the status banner. TE-experimental flag is surfaced on every TE row, every TE prospect page, and here.

v3.0 back-test results (position-aware gate)

MetricResultTargetStatus
Hit@10 (elite in top-50)36%≥ 22%pass
KTC head-to-head50%≥ 50%pass
Spearman ρ (overall)+0.203≥ 0.28fail
Spearman ρ (ex-TE)+0.274≥ 0.28borderline
Bust@1038%≥ 55%fail (partly artifact)

Per-position Spearman ρ — the structural blind spot

PositionSpearman ρRead
QB+0.249validated
RB+0.282validated
WR+0.276validated
TE+0.086experimental
TE limitation — explicit disclosure. TE Spearman ρ of 0.086 is materially below QB/RB/WR. Two structural causes: (1) the college→NFL bridge corpus for TEs is thin (fewer production-eligible TE seasons in the comp pool), and (2) TE fantasy outcomes are heavily landing-spot-dependent in a way the engine doesn't yet model. The page ships under a QB/RB/WR validated, TE experimental label. v3.1 roadmap: TE-specific feature weights (route tree, target share at age 21–22, blocking-vs-receiving split) + landing-spot prior. Treat TE comps as directional, not projections.

Known limitations