xfpGMxfpGM
Players
Teams
Coaches
Betting
Tools
Research
FAQ
← Betting Predictions

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

1. Rate every team, recursively. Each team gets ratings for how well it runs, passes, stops the run, and stops the pass, earned against the quality of who they played (a good day against a great defense counts more). Quarterback quality, injuries, rest, travel, and weather all feed in.
2. Predict the game. Those ratings produce our own fair margin (the spread) and fair total (the points).
3. Compare it to the market. We do not shrink our number toward the market. We back our own. We just make sure we are comparing against what the market really thinks: the posted price with the house's cut stripped out, not whichever handicap the book happens to display.

How we find a bet

Every bet is scored by one honest number, EV% (expected value):

EV% = (chance we win × the payout) − (chance we lose)
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 sizebetshit ratexHit rateROICLV
Pick'em - 336656.7%56.3%+8.3%+2.7%
3 - 773958.8%56.3%+12.2%+3.1%
7 - 1024457.0%55.5%+8.8%+1.7%
10+18054.3%57.0%+3.7%+2.6%
All plays152957.4%56.3%+9.7%+2.7%

Totals

line sizebetshit ratexHit rateROICLV
All plays0---n/a
The headline: across every qualifying bet, spreads returned +9.7% ROI at +2.7% CLV. Totals are stood down — no totals bet is currently placed at any edge, so there is no totals return to report — and the spread CLV stays positive across every game size above, from pick’ems to double-digit spreads. Read the +CLV as the floor on your expected return: we consistently lock a better number than the market closes at, and the realized ROI sitting on top is upside from a market that isn't perfectly efficient.

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.

xCover / P(cover) takes the gap between the deserved number and the line and asks: did this bet deserve to cash? The gap is mapped to a probability with a noise scale fitted directly to historical cover outcomes — bets with this deserved signal covered that share of the time. A win at 20% deserved is a heist; a loss at 75% deserved is a robbery. Over a season the luck washes out — the gap between the win rate and the deserved win rate is how hot or cold a season ran.

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.