How Our NFL Prediction Engine Works
A one-page tour of the data, models, and methods behind every spread, total, and bet on this site. For the deeper "why," see the handicapping reference series.
We don't try to out-guess the final score by gut. We build an opponent-aware, defense-weighted scoring model, lean it toward the market, convert its output into calibrated probabilities, and grade it against the closing line — measuring ourselves the way a sportsbook would, not by bravado.
1. The data we start from
| Source | What it gives us |
|---|---|
| Final scores, 1999–present | Every game's result, closing spread, total, and favorite |
| Play-by-play, recent seasons | Per-play EPA (expected points added) and success rate, split by rush vs. pass — offense and defense |
| Online schedule + odds + rosters | The current slate, posted spreads/totals/moneylines, depth charts, starting quarterbacks |
| Weather forecasts | National Weather Service forecasts for outdoor games inside about a week |
From these we build a per-team profile: each team's scored/allowed averages, the realistic envelope of points a defense allows (15th–85th percentile), and rush/pass defensive EPA ranks — all recency-weighted so the latest season counts most. When we backtest a past season, every profile and every team average is rebuilt from games played before that season only.
2. The scoring engine
For every matchup the prediction engine projects each team's points:
- Opponent-aware envelope baseline. We blend two views, both weighting the defense more heavily than the offense: an additive matchup of each team's deviation from league average, and "envelope framing" that places an offense inside the band of points the specific defense it faces has historically allowed. This is what lets elite defenses produce sub-13 outputs and leaky ones surrender 35+ — instead of every game drifting to a bland ~23.
- Rush/pass scheme matchup. We nudge each offense by the kind of defense it meets (run-stuffing front vs. shutdown secondary) and emit plain-language "why" bullets you see on the pick cards.
- Small, capped situational adjustments that are live today: home field, an opponent-adjusted power rating, coaching, rookies, travel, rest, divisional familiarity, team talent impact, recent form, the current season's defensive rankings, and the quarterback. Several other terms (turnovers, DVOA, line play, red-zone and third-down efficiency, momentum) are wired in but set to zero, because we have no clean, backtestable input for them — a knob with nothing behind it only adds noise.
- The quarterback. Each team carries a sticky baseline starter. When a different quarterback is starting this week, the engine prices the gap between the two, and the game is marked no bet: the market reprices QB news within minutes, so a line posted around a QB change is not one we trust ourselves to beat.
- Dispersion + realism clamp. A deterministic model is naturally flatter than real life, so we stretch the displayed scores around the league mean to reproduce real blowouts and duds, then clamp each team to the realistic range its specific opponent allows. Probabilities are computed before this stretch, so variance is counted once.
3. Leaning on the market
Our own backtests say the engine adds almost no information beyond the betting line (see §5), so the number we publish is blended toward the market: the margin is 70% model / 30% market, the total keeps 30% of the model's view, and the slate's totals are re-centred so the model has no systematic over or under lean across a week.
4. The probability layer
A point estimate isn't a bet. The probability model turns projections into prices the way the market does:
- Margin → win/cover probability via the empirical spread of NFL outcomes (margin SD ≈ 13.5, a little tighter for pick'ems and wider for big spreads); total → over probability (SD ≈ 13.2).
- Key numbers. NFL margins cluster on 3 and 7; we price those spikes rather than assuming a smooth bell curve, and centre the distribution so a model that agrees with the line gets a true coin flip.
- De-vigging. We strip the bookmaker's commission from a posted price to get the market's fair probability.
- Calibration, honestly. We fitted how far our cover probabilities should be trusted on 2022–24 and checked the answer on 2025. The best fit was zero: picks the model called 75% likely covered 49% of the time. So the probability printed on a ticket is the calibrated one — about 50% — and a ticket is shown as a lean at one unit and one star, not as a confident bet.
- When we flag a lean. Our number must beat the line by at least 4 points on a spread or 3 on a total, and the model's own cover probability must clear the 52.4% break-even by 3 points. Stakes use fractional Kelly (quarter-Kelly, capped), which on calibrated probabilities means small.
5. How we grade ourselves
We score the model the way the literature says you should — against the market, not the scoreboard:
- Leak-free backtests, 2022–25 (profiles, team averages and home-field edges all built only from earlier games): 48.8% / 50.0% / 45.7% / 44.0% against the spread — 183-205 pooled, 47.2% — and 47.1% on totals. Every season is below the 52.4% break-even at standard −110 pricing.
- ΔR² over the closing line — how much our number explains beyond the market — is 0.0006 to 0.0104 by season: essentially nothing. A model that profitably beat the market in the published literature needed about 0.018.
- Brier score & log loss — are our probabilities calibrated? (This is how we found the calibration result above.)
- Closing Line Value (CLV) — every flagged pick is logged when it is issued, with the line it was issued at, and graded against the closing line and the final score. Positive CLV over a real sample is the bar any change to the model has to clear. The live record, wins and losses, is on the performance page.
- Tuning discipline. We tune on some seasons and adopt a change only if it also wins on a season the tuner never saw. Several tuned configurations have looked better in training and lost on the holdout; each time we kept the old weights.
6. Draft advisor: how Pick Recs adapt to YOUR league's scoring
The same honesty applies to the fantasy side, which now has its own doc set. Draft recommendations are not a static board: a league-value (VOR) board scored under the league's exact Sleeper rules, a displacement guard, and need saturation re-price players for each league, and the AI Guru board moves players with two calibrated signals (scoring fit + positional premium, and role security). The news layer that adjusts the Squatch boards from headlines and depth charts is documented alongside it.
- Fantasy Drafting — Overview — the sources, the composite, and how league context reweights them.
- Narratives and Point Adjustments — the v2 adjustment rules: event classes, horizons, tier scaling, expiry.
- AI Guru and League Value — VOR, scoring deviation, the Guru's two signals, Pure FPPG, the injury gate.
7. What we honestly don't claim
NFL betting markets are among the most efficient in the world; the closing line is a brutally good predictor, and our own numbers above say we do not beat it on sides or totals. We publish the model because it is a transparent, explainable read of every game — and we publish its record, including the misses, rather than overselling it. The model is a decision aid and entertainment, not a money printer, and nothing here is betting advice.
Go deeper: the full reference series covers how books set lines, predicting spreads and totals, the predictive-variable catalog, modeling methods, bankroll & edge, and our engineering roadmap.