nfl methodology
NFL Methodology
Three layers: weekly in-season fit, preseason season-long, coach-change adjustment. Each ships only after beating the previous version on data it didn't see.
NFL projections come in three layers: a weekly in-season fit, a preseason season-long projection calibrated against published benchmarks, and an adjustment that fires when a team brings in a new head coach or coordinator. Each layer ships only after beating the previous version on seasons it wasn't trained on.
engine
Three-layer projection: preseason season-long + weekly in-season fit + coach-change adjustment
Preseason projections set per-player season totals calibrated against published benchmarks. The weekly fit re-anchors as the season progresses without throwing out the preseason prior. A separate coaching-change layer fires when a team installs a new HC or coordinator — backtested against an n=79 international NT coach-change event study to size the effect.
data
Where the inputs come from
sources
nflverse (nflfastR, nflreadr), Pro-Football-Reference, official depth charts
training
Multi-season fit across the modern (post-2000) era
holdout
Each layer version cross-season validated before shipping — preseason model can't be tuned on the season it's projecting
calibration
Out-of-sample performance
metric
Per-position OOS MAE (QB, RB, WR, TE, K, IDP) + team-game Brier
value
Published per release
All position layers (QB / RB / WR / TE / K / DEF / IDP) ship with their own OOS calibration in release notes. Coach-change layer reports the effect size + CI separately.
key levers
What controls the projection
Per-position aging
QB age curves are not RB age curves. Aging fit per-position, not league-wide. RB cliff is real; QB plateau is longer than market thinks.
Coach-change adjustment
When a team installs a new HC or OC, the projection applies a backtested adjustment. Effect was sized on n=79 international NT coach changes — the prior is small but real.
Schedule strength
Team-game projections account for opponent quality and rest. Short-week games (Thursday) get an availability adjustment.
Snap-share priors
Player projections respect realistic snap shares — RB1/RB2 splits, WR target distributions, TE blocking vs. receiving roles.
faq
Common questions
Why three layers instead of one model?
Different prediction horizons have different signal-to-noise. The preseason layer is a strong prior; the weekly layer updates it without overwriting. Coach changes are a discrete shock that deserves its own treatment.
How big is the coach-change effect?
Backtested on n=79 international NT coach changes, the effect was real but smaller than market consensus. The exact size + confidence interval is in the coach-change release notes. We apply the lower-bound rather than the point estimate to be conservative.
Do you predict individual game lines?
Team-game projections produce predicted point margins. The /schedule page has weekly matchup probabilities. Individual game lines are downstream of the team projection.
What about IDP (Individual Defensive Players)?
Yes — /idp has the per-defender projection. Box scoring for defensive players is its own layer because the stat is noisier per-game than offensive stats.
How do you handle preseason injuries?
Preseason injuries shift the season-long projection at lock. Day-of in-season status changes are not chased — the locked projection is what we evaluate against. Live game prediction is a separate engine.
apex framework
For the platform-wide methodology framework — pre-registration policy, data philosophy, bias controls, and honesty notes — see the apex methodology page.