NFL Prediction System

Honestly-backtested moneyline / spread / total predictions, benchmarked against the closing line.

This is a research/analytics project, not betting advice. Realistic ceilings (see README): moneyline ~66-69% straight-up, ATS ~52-54%, totals near breakeven vs the market. The backtest below shows this build tracks the market rather than beating it -- picks reflect the model's calibrated view, not a demonstrated edge. Predictions are generated pre-kickoff and immutable once written.

This week: Week 1, 2026 season

Snapshot generated at 2026-09-14T02:35:29.483768+00:00 (site rebuilt 2026-09-14 02:36 UTC).

How to read a card: each row is the pick for that market -- the side/total the ensemble (model + de-vigged market) currently favors, with its probability and a confidence bar (green ≥70%, blue 58-70%, gray <58%, essentially a coin flip). "Edge vs market" is how far the ensemble's probability sits from the market's own implied probability -- a large edge is interesting, not proof; the backtest above shows this system does not currently demonstrate a beat-the-market edge on average, so treat a big edge as "the model disagrees with the market," not "the model is right."
DAL @ NYG 2026-09-13
ML DAL 60% edge -0.4pp vs market
SPREAD NYG +3.0 50% edge +0.7pp vs market
TOTAL OVER (47.5) 52% edge +1.3pp vs market
ML: model 53% / market 40% (home=NYG) · Spread: model margin +1.0 (home=NYG) vs market line -3.0 · Total: model 50.8 vs market 47.5
DEN @ KC 2026-09-14
ML KC 53% edge -2.4pp vs market
SPREAD DEN +2.5 53% edge -2.9pp vs market
TOTAL UNDER (43.5) 52% edge -1.3pp vs market
ML: model 44% / market 55% (home=KC) · Spread: model margin -1.3 (home=KC) vs market line +2.5 · Total: model 42.4 vs market 43.5

This week's suggested parlay

Combining picks multiplies risk, not just reward: 2 legs at these probabilities give only a 31.9% chance every leg hits -- each leg's own probability may look reasonable, the combined number is what actually matters for a parlay slip, and it drops fast as legs are added. This is the model's most-confident combination this week, not a recommendation to place it.
#GameMarketPickModel prob.Market prob.Edge
1DAL @ NYGML DAL60.3% 60.0% +0.4pp
2DEN @ KCSPREAD DEN +2.552.9% 50.0% +2.9pp
Combined (2 legs)ProbabilityFair odds (implied, not a real book price)
Model31.9% +213
Market-implied 30.0% +234

One leg per game only (highest-probability market for that game), drawn only across different games -- same-game legs (e.g. a team's moneyline and its own spread) aren't independent enough for the combined-probability math to mean anything, so they're never combined here.

Moneyline backtest (walk-forward, leak-free)

ModelNAccuracyLog lossBrierECE
elo_only (raw)41620.64250.63210.22110.0293
elo_only (isotonic-calibrated)41620.64300.66330.22160.0188
logistic_regression (n=4162)41620.64700.62620.21830.0208
xgboost (nested-CV tuned, n=4162)41620.64970.65230.21960.0210
market_implied (n=4161)41610.66550.60940.21100.0165
home_always (baseline)41620.55430.68770.24730.0168
favorite_always (baseline, n=4161)41610.6657
ensemble (logistic+market, n=4162)41620.66480.60930.21090.0146

Spread & total backtest (walk-forward, leak-free)

MarketNAccuracyModel MAEMarket MAEECE
Spread (ATS), model only40690.5072 10.33 pts10.08 pts0.0599
Spread (ATS), ensemble40690.5139 0.0042
Total (O/U), model only41340.5160 10.61 pts10.45 pts0.0458
Total (O/U), ensemble41340.5104 0.0205

Baselines -- ATS: home-always 0.491, favorite-always 0.489. O/U: always-over 0.496, always-under 0.504. "Ensemble" blends the model with de-vigged market juice (spread/total odds) on the log-odds scale, weights learned walk-forward, same discipline as the moneyline ensemble.

Calibration & home-field advantage

Logistic regression reliability diagram Elo reliability diagram Home field advantage decline over time

On CLV (closing-line value)

Historical nflverse data provides closing lines only, not opening lines, so true historical CLV (did we get a better price than where the market closed) cannot be reconstructed retroactively. What the walk-forward backtest above measures instead is whether the model's calibrated probabilities beat the market's closing-line-implied probabilities on log loss / Brier / accuracy -- and, as reported above, they generally do not by a meaningful margin. Starting this week, every prediction snapshot is timestamped pre-kickoff; as the season progresses we will append realized closing lines to results_log.csv and publish a genuine prospective CLV chart here.