Model backtest
Walk-forward: features from earlier dates only; coefficients refit before each test season on prior seasons (2016-17 onward, excluding 2019-20 bubble and 2020-21 limited-crowd seasons). Who plays is estimated from the official NBA injury report posted before each game and players' missed-game streaks, weighted by the chance of playing learned from earlier dates only.
Regular season, 4,923 games: 67.8% straight-up, margin MAE 10.66, Brier 0.207, log loss 0.601, totals MAE 14.66, using only information available before tip-off (the official injury report posted before each game). Without availability info: 66.3%, margin MAE 10.84. Upper bound with each game's actual lineup (hindsight, not possible live): 67.3%, margin MAE 10.64. Closing line on the same games: 68.8%, margin MAE 10.42. Elo baseline 65.9%; previous engine 61.3%.
| Season | Games | Accuracy | Brier | Margin MAE | Totals MAE |
|---|---|---|---|---|---|
| 2022-23 | 1230 | 65.8% | 0.221 | 9.95 | 14.41 |
| 2023-24 | 1231 | 68.0% | 0.204 | 10.74 | 14.73 |
| 2024-25 | 1231 | 67.8% | 0.204 | 10.82 | 14.47 |
| 2025-26 | 1231 | 69.5% | 0.201 | 11.11 | 15.02 |
Calibration
| 50–55% | 812 games | predicted 52.5% | actual 56.0% |
| 55–60% | 763 games | predicted 57.5% | actual 59.4% |
| 60–65% | 712 games | predicted 62.5% | actual 59.4% |
| 65–70% | 654 games | predicted 67.5% | actual 67.1% |
| 70–75% | 606 games | predicted 72.5% | actual 71.1% |
| 75–80% | 524 games | predicted 77.5% | actual 78.0% |
| 80–85% | 412 games | predicted 82.3% | actual 83.0% |
| 85–90% | 271 games | predicted 87.2% | actual 84.9% |
| 90–95% | 144 games | predicted 91.9% | actual 90.3% |
| 95–100% | 25 games | predicted 96.3% | actual 100.0% |
When the model says a team wins X% of the time, how often did it? Close agreement means the probabilities can be taken at face value.
Test seasons: 2022-23, 2023-24, 2024-25, 2025-26 (regular season). Every headline number on this page comes from projections made with only the information that existed before each game — the same inputs the live model has.
Availability: Official NBA injury report (archived PDFs, latest report at least 90 minutes before tip, 5 PM ET at the latest) + missed-game streaks. 5,282 of 5,282 test-season games had an archived pregame report. A Questionable player, for example, counts for about 52% of his usual minutes — the rate learned from earlier games.
Against simple baselines
| Method | Accuracy | Brier | Log loss | Margin MAE | Totals MAE |
|---|---|---|---|---|---|
| HoopVantage model (pregame injury report — as live) | 67.8% | 0.207 | 0.601 | 10.66 | 14.66 |
| Same model, no injury/availability info | 66.3% | 0.212 | 0.612 | 10.84 | 14.79 |
| Elo rating (margin-of-victory, 538-style) | 65.9% | 0.215 | 0.619 | — | — |
| Better record so far | 63.5% | 0.233 | 0.659 | — | — |
| Home team always | 55.6% | 0.249 | 0.691 | — | — |
| Previous HoopVantage engine (static ratings) | 61.3% | 0.245 | 0.701 | 12.06 | 15.94 |
| Upper bound: actual availability (hindsight, not possible live) | 67.3% | 0.206 | 0.599 | 10.64 | 14.62 |
The previous engine used one fixed set of 2024-25 team ratings; its 2024-25 numbers therefore had the benefit of hindsight, and it still trailed. "No availability info" shows how much knowing who plays is worth. The upper bound uses each game's actual list of players who played — information nobody has before tip-off — so it is shown only to measure how close the pregame injury report gets.
Playoffs (all four test seasons): 359 games, 64.6% straight-up, Brier 0.228, margin MAE 12.16.
Model vs market vs blend
Same games, regular season. Market = median of sportsbook lines recorded by ESPN's public odds feed, with the bookmaker margin removed. Blend weights for each season were fit only on earlier seasons.
| Forecast | Games | Accuracy | Brier | Margin MAE |
|---|---|---|---|---|
| Model | 4922 | 67.8% | 0.207 | 10.65 |
| Closing market | 4922 | 68.8% | 0.202 | 10.42 |
| Blend with closing market | 4922 | 68.5% | 0.202 | 10.43 |
| Model (games with opening lines) | 2461 | 68.7% | 0.202 | 10.96 |
| Opening market | 2461 | 68.8% | 0.202 | 10.99 |
| Blend with opening market | 2461 | 68.5% | 0.201 | 10.94 |
Read honestly: the closing market is more accurate than the model on its own, and blending with it adds essentially nothing because the closing line already absorbs the information. Against opening lines the model is roughly as good as the market, and the blend is the best of the three. Opening lines are only in the feed from 2024-25 on.
How good can an NBA model get?
Closing sportsbook lines are among the most efficient public NBA forecasts. The table above compares against them game by game: the model on its own is a little behind the closing market and about level with opening lines. That is where a well-built public model should be — competitive, not magic.
Player projections
Points / rebounds / assists / minutes average miss: pts 5.11 (season-average baseline 5.13) · reb 2.03 (season-average baseline 2.04) · ast 1.50 (season-average baseline 1.50) · min 5.15 (season-average baseline 5.18) over 69,813 player-games.
Methodology · Live track record
Projections are statistical estimates for entertainment and analysis only. Nothing here guarantees any result.