Home / Methodology

How the Model Works

A full technical breakdown of OverADP's machine-learning pipeline — how we project fantasy points, how we quantify uncertainty, and how we validate without leaking future information into the past.

The one-sentence version

We train a per-position CatBoost ensemble on 7 years of NFL skill-position data (2019-2025), validated with rolling walk-forward splits so the model is only ever tested on seasons it hasn't seen, and we wrap point predictions with conformal quantile regression to produce 80% confidence intervals with empirically verified coverage.

1. Walk-forward validation (not random splits)

Fantasy football data is temporal: player stats in 2023 are not independent of stats in 2022. A standard 80/20 random train-test split would leak future information — the model would see a player's 2024 season during training and then be "tested" on his 2025 season, but it already knows the player's career trajectory.

Walk-forward validation prevents this. We train on seasons 2019-N and test on season N+1, for every N. The 2025 results you see on this site come from a model that was trained on 2019-2024 only and tested on 2025 out-of-sample. Every year is a truly held-out test.

2. Four-model ensemble

We run four models per position: Ridge regression, Random Forest, XGBoost, and CatBoost. In walk-forward validation, CatBoost wins every position after hyperparameter tuning with per-position temporal weights, so the production model uses CatBoost point predictions. The ensemble spread is also used for ensemble uncertainty (see below).

Per-position tuning matters. QB rewards deeper trees (depth=6) with more iterations; RB/WR/TE prefer depth=4 with more aggressive L2. Temporal weighting (recent seasons weighted more heavily) cut QB MAE by 2.6% and RB MAE by 3.0% in validation.

3. Conformal quantile regression (CQR) for honest 80% intervals

Point predictions alone are dangerous in fantasy — every projection is wrong, the question is by how much. We train separate quantile CatBoost models at the 10th and 90th percentiles, then calibrate on the most recent held-out season using split-conformal CQR.

The result: intervals with empirically verified 80% coverage. In 2025 walk-forward testing, raw quantile regression covered 56% of outcomes (badly miscalibrated), while conformal CQR covered 83.5% on the test set — above the 80% target, with coverage error under 4 percentage points. This is real uncertainty, not a Bayesian band.

4. Depth-chart awareness (Week 1 snapshot)

One of our biggest 2026 feature additions. We pull pre-season depth charts from nflverse (Week 1 snapshot for 2019-2024; nearest-to-September-5 snapshot for 2025+) and encode each player's depth rank (1=starter, 2=backup, 3+=depth), plus binary is_starter and is_backup flags.

Used for QB, WR, and TE projections. Excluded from RB because RBBC (running-back-by-committee) breaks the signal — a RB2 who gets 60% of carries produces more than a RB1 who splits. Walk-forward gain: QB MAE −3.4%, WR MAE −2.6%.

5. Target-competition features (prevent phantom breakouts)

Using prior-season teammate targets, we compute each WR's teammate_targets_prev and teammate_rec_yards_prev on their current team (so if Chase Claypool signs with the Jaguars, his projections reflect BTJ's 200+ targets ahead of him). We also compute teammate_carries_prev for RBs.

Crucially: no leakage. We use prior-season teammate production on the current roster, never current-season production. This re-runs after free-agent and draft changes are reflected in the projection-season roster.

6. Conservative monotonic constraints

Aggregate production lags (prior-season fantasy points, targets, receptions, carries) should never have a negative marginal effect on projections. We encode positive monotonic constraints on exactly these features and leave everything else unconstrained. This adds sanity guardrails without overfitting — MAE stays within noise, but the model can't produce pathological projections where scoring more the prior year makes you project lower.

7. College + draft capital features for rookies

For rookies and second-year players, we merge draft picks, combine metrics, college production, and interaction features (college_x_rookie, draft_cap_x_rookie, athletic_x_rookie). Athletic score is a position-weighted composite of combine z-scores. These features give the model signal before an NFL stat line exists.

The 2022-2025 walk-forward results

All numbers below are averages across four held-out test seasons (2022, 2023, 2024, 2025). The model only ever sees past seasons during training, never the season it's being tested on. ADP baseline is a per-position quadratic regression on log(ADP), fit on the same training seasons.

MetricOverADPADPEdge
Overall R² (variance explained)0.590.09+7×
Overall MAE38.462.7−39%
QB MAE71.2107.8−34%
RB MAE40.465.0−38%
WR MAE34.451.2−33%
TE MAE24.239.6−39%
QB R²0.490.00huge
TE R²0.600.03+20×
80% CI coverage83.5%n/acalibrated

What the model doesn't do

Honest limitations:

It can't predict injuries. Malik Nabers finishing 2025 with 4 games played wasn't a model call — it was a bone bruise. We DO model injury rates from prior-season games-missed features, but week-to-week injuries are noise.

It's only as good as the data. UDFAs and late-round rookies with missing college data get wider intervals and lower confidence. Coaching-change features were tested and rejected after walk-forward validation showed them adding noise rather than signal.

Fantasy football is high-variance. Even a perfect model won't hit every call. Our 80% CIs cover 83.5% of outcomes — which means 16.5% of players still blow through their interval in either direction.

What's next

We refresh the depth-chart features after the NFL draft (late April) and again in August once pre-season depth charts are final. Draft capital for 2026 rookies is already in the model, and team assignments update automatically when FA signings are reflected in the roster data.

See the current results in the free War Room, or dive into the top sleepers and top busts.

Related Rankings

Get the Full Model in Your Draft Room

Every projection, 80% confidence interval, risk tier, and sleeper/bust call — live, in a single-page draft command center. Free to browse. $6.99 for a single draft, $24.99 for the full season.

ENTER THE WAR ROOM →