How the Betting Model Works
We build our own point spread and total for every NFL game, then bet only where our number is far enough from the book's to be worth it after the house's cut.
How we make our number
How we find a bet
Every bet is scored by one honest number, EV% (expected value):
Pushes are neutral. At −110 you need about 52.4% just to break even, and that extra 2.4% is the house's cut. We only bet at 3% EV or better, which works out to roughly a 54% chance of winning.
We also track CLV (closing line value): did the market move toward our number after we bet? The closing line is the market's last and sharpest price, so beating it consistently is the best evidence a model is sharp rather than lucky. Think of it as a floor on your expected return. If you routinely get a better number than the market closes at, that edge is real money over time. The week to week scores just pile noise on top of it.
Does it actually work?
Graded on 2016-2025 seasons. The model only ever learned from earlier seasons, so it never saw the games it is being graded on. The tables split the plays by the size of the game, close spreads against blowouts and low totals against shootouts, because a real edge should show up everywhere rather than hide in one corner. ROI is profit per unit bet: +5% means $105 back on every $100 risked.
Spreads
| line size | bets | hit rate | xHit rate | ROI | CLV |
|---|---|---|---|---|---|
| Pick'em - 3 | 366 | 56.7% | 56.3% | +8.3% | +2.7% |
| 3 - 7 | 739 | 58.8% | 56.3% | +12.2% | +3.1% |
| 7 - 10 | 244 | 57.0% | 55.5% | +8.8% | +1.7% |
| 10+ | 180 | 54.3% | 57.0% | +3.7% | +2.6% |
| All plays | 1529 | 57.4% | 56.3% | +9.7% | +2.7% |
Totals
| line size | bets | hit rate | xHit rate | ROI | CLV |
|---|---|---|---|---|---|
| All plays | 0 | - | - | - | n/a |
The deserved layer: xSpread, xTotal, and xCover
Final scores lie. A tipped pass becomes a pick-six, a fumble bounces sideways, a kicker shanks one, and suddenly a team that outplayed its opponent loses by 10. So alongside every real result we compute the deserved result: a play-by-play efficiency model re-scores the game on how each team actually moved the ball and stopped the other, producing xSpread (the margin the game deserved) and xTotal (the points it deserved). The model is trained leave-one-season-out, so it never saw the game it grades.
The xHit rate column in the tables above is exactly that: the win rate the plays earned, luck stripped. See every bet graded both ways, week by week, on the Deserved to Cover tracker — where every xSpread now opens up to show the arithmetic behind it, feature by feature.
Under the hood: a ridge fit on nine efficiency differences (success rate overall and split pass and rush, explosive-play rate, CPOE, sack rate, pressure rate, scramble rate, EPA per play), 21 leave-one-season-out folds, residual SD 7.6 points. Home field is a 1/0 dummy rather than an intercept, so it is worth about two points at a real venue and exactly zero at a neutral site. EPA enters as a residual rather than raw, because raw it is close to a restatement of the scoreline and absorbs most of the fit.
Entertainment purposes only. The information on xfpgm.com is not intended to be, and shall not be construed as, gambling advice, financial advice, or any other professional advice or service. xfpgm.com and its owners assume no responsibility for errors or omissions. Past performance is evidence, not a guarantee of future results. Please gamble responsibly — if you or someone you know has a gambling problem, call 1-800-GAMBLER.