Methodology
How the model works
An efficiency-based statistical model that identifies where the market is systematically wrong, validated walk-forward across five sports.
The core idea
Most sports betting models try to predict outcomes. That's the wrong objective.
The market is broadly efficient — Vegas lines aggregate enormous amounts of information and price most games correctly. A model that simply tries to be more accurate than the market will produce near-zero edge, because the market is already doing that job well.
The BetMachine Model was built around a different objective: identify games where the market is consistently wrong — not all games, just the specific situations where historical data shows the market systematically misprices probability. Find those games, bet them at appropriate size, and repeat across a large sample.
This means the model is not calibrated the way a weather forecast is calibrated. It is calibrated to amplify disagreement with the market in situations where that disagreement has historically been profitable. The model appears overconfident by traditional standards — and that is by design.
What the model measures
The model is built on team efficiency: how many points a team scores and allows per possession, adjusted for opponent quality.
Efficiency data has a property that makes it useful for betting: it updates early and updates meaningfully. At the start of a season, the market's lines still anchor heavily on the prior season. The efficiency model picks up on quality changes — teams improving or declining — faster than consensus market opinion adjusts. That early-season window is where the model finds its strongest signal.
Opponent quality adjustment uses ELO ratings: a continuous measurement of team strength that updates after every game based on outcome and margin of victory. The ELO system resets partially at the start of each season to reflect genuine uncertainty about how much prior-season quality carries forward.
From efficiency to probability
Step 1: Score prediction.
Efficiency ratings are combined multiplicatively to generate predicted scores for each team. The difference between the two predicted scores is the predicted margin.
Step 2: Probability conversion.
The predicted margin is converted to a win probability using a logistic sigmoid function — a mathematical curve that maps the margin to a value between 0% and 100%. The steepness of this curve is derived from historical data.
Step 3: Market comparison.
The model's implied probability is compared to the market's fair probability (the Vegas line with the bookmaker's margin removed). The difference is the edge.
Step 4: Filtering.
Not all edges become published bets. The model applies optimizer-derived filters — minimum edge thresholds, spread size bounds, win probability ranges, and odds gates — that suppress bets where historical data suggests the signal is unreliable.
Step 5: Unit sizing.
Bets that pass filtering are sized 1–5 units based on edge magnitude. Larger disagreements with the market receive larger bets.
How parameters are set
No parameter in the model is set manually. Every threshold, every calibration value, every filter is derived through a structured optimization process on historical data.
The optimizer runs five stages in sequence — calibration, edge gates, spread size gates, probability gates, and odds gates — each refining a different aspect of the model. Parameters are evaluated against seasons the optimizer never saw during training.
This is the critical constraint: the optimizer is not allowed to know the outcomes it is being evaluated on. Walk-forward optimization enforces strict temporal separation between training and evaluation. Each sport is optimized independently.
Walk-forward validation
Walk-forward validation is how we verify the model isn't curve-fitted.
The process is sequential: use earlier seasons to derive parameters, test those parameters on the next season, advance the window, repeat. Final performance figures are the aggregate of all held-out test seasons.
Every performance figure on this site reflects a parameter set that was derived on earlier seasons and evaluated on seasons it had no access to during optimization. That's what "out-of-sample" means: the model couldn't have memorized the answer.
Performance summary
Walk-forward backtested results, push-excluded, canonical optimizer.
| Sport | Seasons | Win rate | ROI (pre-juice) |
|---|---|---|---|
| NCAAF | 9 | 67.2% | +34.8% |
| NFL | 9 | 62.7% | +25.4% |
| NBA | 10 | 58.9% | +16.3% |
| NCAAB | 9 | 58.0% | +15.8% |
| NHL | 3 | 55.5% | +28.1% |
All win rates statistically significant at p < 0.0001. NFL 2023–24 produced a 49.4% win rate — the only below-50% season in the walk-forward record. It is included in the NFL aggregate.
What the model is not
Not a chatbot.
GPT, Claude, and Gemini don't have a walk-forward backtest. We run all three on every game so you can see the difference.
Not machine learning.
No neural networks, no language models, no AI in pick generation. The model uses regression and optimization on efficiency statistics.
Not a tout service.
Picks are generated automatically. No human handicapper is involved. The complete record — including losing seasons — is published.
Not infallible.
The model is wrong on individual games constantly. The edge is statistical — it emerges across a large sample of bets, not on any single game.
Statistical model only, not AI-generated picks · Walk-forward backtested results. Past performance does not guarantee future results.