Backtested against real fantasy outcomes, per position, per year.
Earned by math. Verified by outcomes.
Every season the engine reruns as a walk-forward backtest — train on year Y, grade the preseason projections against what actually happened in year Y+1. The numbers below are the result. They don't get adjusted toward a target. Outliers don't get excluded. The cohort doesn't get curated.
An honest note on leakage. Engine parameters and rookie baselines are not frozen per reference year, so these columns are next-season-out-of-sample for the predictions but not a fully leakage-free holdout. For a clean out-of-sample read on the rookie model specifically, our leave-one-class-out estimate is MAE ≈ 3.46 (vs 3.27 in-sample — a +0.19 optimism gap), still well below the 4.71 of the prior approach. The 2026 season is reserved as a pre-registered, untouched holdout for prospective scoring.
How to read the table. r is correlation between projection and actual. Closer to 1.0 is better. MAE is mean absolute error in fantasy points per game. Lower is better. bias is the average over/under by position. Positive means the engine projected high. The volume-weighted variants downweight small-sample players, and that's the version that matters for projection trust.
| Position | 2021 | 2022 | 2023 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| n | r | MAE | bias | n | r | MAE | bias | n | r | MAE | bias | |
| QB | 34 | 0.632 | 5.44 | 4.24 | 31 | 0.481 | 6.26 | 4.48 | 34 | 0.691 | 4.62 | 3.21 |
Volume-weighted: 2021: MAEw 5.15 · biasw 3.82 · 2022: MAEw 5.52 · biasw 4.03 · 2023: MAEw 4.80 · biasw 1.58 | ||||||||||||
| RB | 70 | 0.644 | 3.58 | 2.61 | 72 | 0.683 | 2.84 | 1.57 | 74 | 0.758 | 2.86 | 1.33 |
Volume-weighted: 2021: MAEw 2.78 · biasw 1.36 · 2022: MAEw 2.95 · biasw 0.31 · 2023: MAEw 2.35 · biasw -0.03 | ||||||||||||
| WR | 119 | 0.760 | 3.10 | 2.73 | 126 | 0.668 | 2.75 | 1.71 | 113 | 0.743 | 2.65 | 1.95 |
Volume-weighted: 2021: MAEw 2.59 · biasw 1.80 · 2022: MAEw 2.56 · biasw 0.65 · 2023: MAEw 2.24 · biasw 0.92 | ||||||||||||
| TE | 62 | 0.734 | 2.47 | 1.53 | 59 | 0.713 | 2.26 | 1.27 | 64 | 0.704 | 2.27 | 1.14 |
Volume-weighted: 2021: MAEw 2.06 · biasw 0.58 · 2022: MAEw 2.15 · biasw 0.35 · 2023: MAEw 2.10 · biasw 0.17 | ||||||||||||
Publishing accuracy receipts means publishing the misses too. These are the calibration gaps we know about, what causes them, and what's planned.
Overnight sprint combined ship (Ryan-directed acceleration; evidence _sprint_v1131/, combined A/B tune affected n=384 dMAE -0.1014 CI [-0.1893,-0.0187], pooled -0.0181 CI excl zero, validation no-harm; ablations replicate workstream receipts, interaction sub-additive). G-38 cameo-mover gate (xfp_base.volume_reproject.qb_min_ref_sf 0.35): the Bridgewater-29.6 class was the G-31 mover volume-reproject applying a cameo-derived factor (clipped at cap 2.0) to a starter-upgraded rate; inflating factors now require ref-season sf >= 0.35, docks kept, DISC-R8 guard remains backstop. G-35 qb_starter_status_prior (post-shrinkage): non-established QBs blended toward measured class realizations (backup class projected 15.4 vs realized 9.1); tune affected dMAE -1.68 CI [-2.46,-0.92]; validation neutral no-harm (disclosed); QB12->24 rate spread 4.12->5.25. G-34 y2_rate_uplift: Y2 veterans +1.4/+0.9/+0.6/+0.5 ppg (QB/RB/TE/WR, 0.5x measured cohort bias, ungated by round); tune affected n=280 CI excl zero, WR slice CI excl zero; bust-slice cost +0.16/+0.30 disclosed; Y3 = receipted null. G-41 reverse-spike relief ships DARK (_enabled false, 0=legacy proven): tune null-ledgered, recent-era revisit signal logged. G-40 two_way_position_overrides to config (meta + stats rows; map == legacy hardcode, zero board effect). G-43 publication stat lines (redraft.publication_stat_lines): per-component lines derived with the same recency weights, scaled to reconcile exactly (stat_line_scale audit), ranking_sanity reconciliation gate tol 0.15 ppg; rookies ppg/total-only v1; publish_redraft hook config-conditional. G-44 marketing gate fail-closed (missing/unreadable/malformed backtest_results.json -> BLOCK; explicit kill switch, distinct check id). New goals G-47/G-48/G-49; G-45 keep-verdict diagnosis and G-46 targets-basis diagnosis on file.