This Season's Picks

Backtest: Walk-Forward Accuracy by Season

Each season is predicted using a model trained only on the seasons before it — no peeking.

Straight-up win accuracy Against-the-spread accuracy — 50% line = a coin flip (an efficient betting market's expected ATS result)

How It Works

Features

  • Offensive EPA/play — season-to-date, before the game being predicted
  • Defensive EPA/play allowed — same, for the defense
  • Pace — offensive plays per game
  • Rest days — days since each team's last game
  • Recent trade activity — trades in the 14 days before kickoff

Every feature is computed using only data available strictly before the game — no leakage from the outcome being predicted. Early-season weeks blend toward the prior season's rate until enough current-season games exist.

Models

  • Logistic regression — win probability
  • Logistic regression — against-the-spread cover probability (spread included as a feature)
  • Linear regression — predicted point margin, used to size the live ATS pick against the market spread

Trained on 2,639 completed regular-season games across the 2016–2025 seasons. Evaluated with a season-by-season walk-forward backtest: each holdout season is scored using a model that has never seen it.

An Honest Note on Results

Straight-up win accuracy backtests at 59–69% per season. Against-the-spread accuracy backtests at ~49–53% — essentially a coin flip. That's expected and correct: the closing spread already prices in almost everything this model knows, and a five-feature logistic regression has no business beating an efficient market.

Early in development, a sign error in the ATS label formula (using -spread_line instead of spread_line) produced a suspicious 79.5% backtest accuracy. That number should have been an immediate red flag — no simple model beats Vegas by that margin — and tracing it down surfaced the bug. The lesson generalizes: an implausibly good result in a well-studied, efficient domain is usually a leak, not a breakthrough.