Skip to main content

Backtesting

Historical replay compares the decision rules with fixed baselines and hindsight. Use this page to interpret the report; use Run a backtest for commands.

What data goes into a replay?​

InputSource or rule
Players, crosswalk, weekly PPR actualsnflreadpy
ADP proxyFantasyPros ECR scrape before opening kickoff
No eligible scrapePrior-season actual-point ranks
Fixed preseason projectionmax(1, 30 − 0.15 × rank)
Outside ranked poolWeekly shell projection 0
League and ownershipFixed standard league and simulated draft; scheduled playing teams
Draft opponentsPick by ADP
This tests decision mechanics

Synthetic preseason values are not historical weekly Sleeper forecasts. Current-week actuals are revealed only after decisions; the replay does not reconstruct historical ESPN ownership.

What does each comparison measure?​

ComparisonOur resultBaseline
LineupActual points from chosen startersHindsight-optimal starters in that week's eligible pool, plus a fixed preseason-projection lineup
WaiversWhole evolving roster's weekly actual pointsInitial roster held with no moves
DraftDrafted roster's replay-period actual pointsOur team in an all-ADP snake draft
Interpretation limitMeaning
Waiver/draft totalsInclude bench players; measure roster production, not starting points or wins
HindsightUpper comparison within the supplied eligible pool
Missing actual pointsCount as 0
Draft periodOnly replayed weeks
Live-path scopeExact-week lineup loader and ordinary same-position >3 waivers
Not modeledPregame fallbacks, IR actions, rumors, trades, FAAB, waiver competition or championship probability

Where do results live?​

OutputLocation
JSON summarybacktest_output/<season>/<season>_report.json
Weekly CSVbacktest_output/<season>/<season>_weekly.csv
CSV columnsweek, our_points, optimal_points, naive_points
Persistent summariesOriginal database's backtest_results; survive the next schema wipe
Read APIBacktest routes through backtest_service