← Back to Learn

How an NFL Moneyline Prediction Model Works — and What It Can’t Do

We built an NFL game model on eleven seasons of public data, tested it the only honest way — one season at a time, never seeing the future — and then tested it against the sportsbook's closing line. It wins the first test and loses the second. This is what that means, what the model is actually for, and why we publish spreads and totals with no pick attached.

Published September 2026 · 11 min read

1. What the Model Is

A gradient-boosted tree model (XGBoost) that predicts the margin of an NFL game — home points minus away points — and converts that margin into a win probability. It is trained on every regular-season and playoff game from 2015 on, using 604 features built entirely from public data:

EfficiencyEPA per play, success rate, explosive-play rate, pass and rush splits, by down and situation, from nflverse play-by-play and Next Gen Stats.
FormRolling windows of those measures over the last few games and the season to date, for the team and its opponents.
PersonnelWho is actually starting. Quarterback changes, injured-list absences by position group, depth-chart continuity — the NFL equivalent of knowing the starting pitcher.
ContextHome field, rest days, travel, division games, week of season.

One thing it is never given: the betting line. Market columns are blacklisted at the feature-selection step and the code aborts if one appears. A model that can see the spread will learn to copy the spread, and then its “65% accuracy” is the market's accuracy wearing a costume. Keeping the line out is what makes the comparison in Section 5 meaningful.

2. How It Is Tested

Walk-forward, by season. To predict 2018, the model is trained on 2015–2017 and nothing later. To predict 2019, on 2015–2018. And so on through 2025. Every number on this page comes from games the model had not seen when it predicted them.

Two details matter more than they sound. The probability calibration (margin → win probability) is fitted on a held-out season using a model that never saw it — the first version fitted it on the training data and claimed 90% where it delivered 72%. And the final model is an average of five separately seeded runs, because two runs on identical data differ by about two points at the confident threshold. That is why we quote ranges: “~72–73%” is honest; “73.7%” is a coin toss between seeds.

3. The Results

ConfidenceShare of gamesPicks / seasonStraight-up
all picks100%~26065%
≥ 60%63%~175~70%
≥ 65%47%~130~72–73%
≥ 70%33%~90~75%
≥ 80%10%~28~80%

2,082 published picks, 2018–2025 walk-forward, five-seed average. Games where the model's margin and win classifier disagree (~5% of the slate) are published as toss-ups with no pick; forced, they hit 51%.

The confidence axis works: as the model gets more sure, it gets more right, in every season. The worst single season at the 65% tier was 69%; the best was 81%. That consistency is the thing to look for in any model — a headline average hides the bad years, and bad years are what empty a bankroll.

The site's play tier is 65% and above. Roughly seven games a week clear it.

4. Calibration: Does 65% Mean 65%?

A model can be accurate and still lie about how sure it is. Calibration checks whether the probability means what it says.

Model saidActually wonError
55%56%+1
65%65%0
74%74%0
85%78%−7

Near-exact through 80%. The top bucket runs hot — the model is over-confident about its biggest favourites — which is one of two reasons the site is suspicious of any favourite priced past about -250 whatever the model says. The other reason is the next section.

5. The Closing Line Is Better. Here Is the Proof.

The test that matters is not “how often is the model right” but “does the model know anything the market does not.” Two ways to check.

Margin error

Our best projection misses the final margin by 10.35 points on average. The closing spread misses by 10.06. The market is a better point-spread forecaster than we are, and than any model we built — across three rounds of feature work, more data, and a stacked ensemble that made things worse.

Forecast encompassing

Regress the actual margin on both the closing line and our projection. If the model carried information the line lacked, its coefficient would be positive and significant. It is +0.018 with a t-statistic of 0.2: once you know the line, the model adds nothing. The market fully encompasses it. The NFL closing line is the sharpest number in sports betting, and this confirms it.

We could have left this out. Most sites do. But a prediction product that hides the test it failed is selling you the number without the context you need to use it, and the context is the whole point.

6. Why a 64% Model Loses Money

The winners a model gets right are mostly favourites, because favourites win. And favourites are priced. A team at -250 has to win 71% of the time to break even; a team at -150, 60%. So a model that picks winners at 65% and is paid at favourite prices is not 65% profitable — it is roughly break-even minus the juice.

Graded at closing prices with flat one-unit stakes over 2,219 bets, the model returned −2.4%. The best confidence bucket managed +1.0% with an error bar of ±5.5 — noise. And the games where the model disagreed with the market the most, claiming ten points or more of edge, hit 45.5%. When this model and the closing line disagree loudly, the line is right.

That is the fact that governs how the site uses the model. A play badge means the model is confident; it does not mean the price is wrong. The price is your job, and Section 8 is how to do it.

7. Why Spreads and Totals Are Projections Only

We built both. Neither survived.

Against the spread, the model hit 50.6% overall — below the 52.4% break-even — and every way of slicing it (by how far it disagreed with the line, by confidence, by season) was either flat or went backwards. Blindly betting every road team over the same window hit 51.1%, which is a sentence that should end any discussion of the model's spread edge.

Totals were worse in a specific way: confidence did not sort. The model's most confident totals were its least accurate, and its probability of the over never moved far from 50%. A number with no confidence axis is not a pick.

So the site shows the model's projected margin and projected total on every game, as numbers, and attaches no play to either. They are useful context — the projected total tells you the scoring environment a prop lives in — and we would rather show a projection with no claim than a pick with a false one. Moneyline is the only NFL game market with a graded record on the performance page.

8. How to Actually Use a Win Probability

Convert the price to a probability and compare. American odds to implied probability:

favourite (−odds): implied = odds ÷ (odds + 100)
underdog (+odds): implied = 100 ÷ (odds + 100)

A -150 favourite implies 60%. A -250 favourite implies 71%. A +130 underdog implies 43%. Then the decision is one line: is the model's probability higher than the implied probability by enough to cover the book's margin? Three rules we follow ourselves:

1The number has to clear the price. A 72% pick at -310 (implied 76%) is not a bet, however confident the model is. Most confident NFL picks fail this test, which is why the play tier and the bet list are different things.
2Do not chase disagreement. When the model has an underdog at 60% and the market has him at 42%, history says the market is right (45.5% in that bucket). Big gaps are model error, not market error.
3Nothing past about -250. The calibration runs hot at the top, the price needs 71%+, and the downside of a favourite losing is the whole stake. The model's best work is in the 55–70% band where prices are near even money.

Used that way, a 65% model is a good tool: an independent, calibrated second opinion you can hold against the price, rebuilt every week from the same public data anyone can check. Used as a list of teams to bet, it is a slow way to pay the juice.

See the model's number on every game this week

Win probability, projected margin and total for all sixteen games, the play tier marked, the price next to it — and the graded record, win or lose, on the performance page. Season-long playoff and Super Bowl odds, simulated from the team ratings that feed the game model, are free.

Frequently Asked Questions

How accurate is an NFL moneyline prediction model?

Ours picks the straight-up winner about 65% of the time across eight seasons of walk-forward testing on eleven seasons of data, and about 72–73% of the time on the games where it is at least 65% confident — roughly seven picks a week. The worst single season at that confidence was 69%. Those figures are quoted as ranges deliberately: two training runs on identical data differ by a couple of points, so a single decimal would be false precision.

Can a 65% NFL model beat the sportsbook?

Not by itself. Accuracy is not profit. The winners a model gets right are mostly favourites, and favourites are priced: a team at -250 has to win 71% of the time just to break even. Graded at closing prices with flat stakes, our 65%-accurate model returned about −2.4% over 2,219 bets. The model is useful for producing a probability you hold against the price, not for producing a list of winners to bet blindly.

Why does the model not pick NFL point spreads or totals?

Because it could not beat the closing line on either, across every subset we tested. Against the spread it hit 50.6% — below the 52.4% break-even — and blindly betting every road team did better. Its total projection had no relationship between confidence and accuracy at all. When a regression of the actual result on both the closing line and our projection shows the projection adds nothing once the line is known, the honest product is a projection with no play attached, and that is what we publish.

What features does an NFL prediction model use?

Ours uses 604 features built from public nflverse play-by-play, Next Gen Stats and roster data: team efficiency measures like EPA per play and success rate, split by situation; rolling form over several windows; rest and travel; personnel — who is actually starting, quarterback changes, injured-list absences by position group; and home field. It never sees the betting line. That is enforced in code, so the model cannot simply learn to copy the market and call it a prediction.

What does calibrated mean for a win probability?

That the number means what it says. When the model gives a team 65%, teams given 65% should win about 65% of the time. Ours does: predicted 0.65 buckets won 64.9%, predicted 0.74 won 74.0%. The top bucket runs hot — predicted 0.85 won 77.7% — which is why the site treats anything past about -250 with suspicion regardless of the model’s number.

The week ahead, once a week

Last week's graded record — wins and losses — the plays for the week ahead, and a subscriber discount code. One email, no daily noise, unsubscribe in a click.

Responsible Gambling

Educational content only. Past performance does not guarantee future results. Sports betting carries financial risk and may be illegal in your jurisdiction. Must be 21+ in legal US states.

If you or someone you know has a gambling problem, call 1-800-GAMBLER or visit ncpgambling.org.