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%.

SeasonGamesAccuracyBrierMargin MAETotals MAE
2022-23123065.8%0.2219.9514.41
2023-24123168.0%0.20410.7414.73
2024-25123167.8%0.20410.8214.47
2025-26123169.5%0.20111.1115.02

Calibration

50–55%812 gamespredicted 52.5%actual 56.0%
55–60%763 gamespredicted 57.5%actual 59.4%
60–65%712 gamespredicted 62.5%actual 59.4%
65–70%654 gamespredicted 67.5%actual 67.1%
70–75%606 gamespredicted 72.5%actual 71.1%
75–80%524 gamespredicted 77.5%actual 78.0%
80–85%412 gamespredicted 82.3%actual 83.0%
85–90%271 gamespredicted 87.2%actual 84.9%
90–95%144 gamespredicted 91.9%actual 90.3%
95–100%25 gamespredicted 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

MethodAccuracyBrierLog lossMargin MAETotals MAE
HoopVantage model (pregame injury report — as live)67.8%0.2070.60110.6614.66
Same model, no injury/availability info66.3%0.2120.61210.8414.79
Elo rating (margin-of-victory, 538-style)65.9%0.2150.619——
Better record so far63.5%0.2330.659——
Home team always55.6%0.2490.691——
Previous HoopVantage engine (static ratings)61.3%0.2450.70112.0615.94
Upper bound: actual availability (hindsight, not possible live)67.3%0.2060.59910.6414.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.

ForecastGamesAccuracyBrierMargin MAE
Model492267.8%0.20710.65
Closing market492268.8%0.20210.42
Blend with closing market492268.5%0.20210.43
Model (games with opening lines)246168.7%0.20210.96
Opening market246168.8%0.20210.99
Blend with opening market246168.5%0.20110.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.