NBA Model Health
Phase 3 validation — prediction accuracy, HCA/B2B calibration, FFI weight regression.2025-26 · last run 4/2/2026, 2:28:51 AM
1. Prediction Accuracy
Straight-up picks using season-end adj_net ± configured HCA. Retroactive — not held-out.
Games evaluated
1,132
completed regular-season games
Straight-up accuracy
69.4%
correct picks
Brier score
0.201
lower = better (random = 0.25)
Log-loss
0.589
lower = better (random = 0.693)
2 & 3. Empirical HCA + B2B Calibration
OLS fit: home_margin ~ β₀ + β₁·adj_net_diff + β₂·home_b2b + β₃·away_b2b. 1132 games.
OLS R²
0.261
explanatory power of the model
Empirical HCA
+1.88 pts
configured: +2.50 pts/100
Model scale (β₁)
1.095
goal ≈ 1.0 (pts ≈ pts/100 poss)
Home B2B penalty
-2.69 pts
configured: −1.8
Away B2B (home benefit)
+1.28 pts
configured: +1.8 to home
4. FFI Weight Derivation
OLS: adj_net ~ w₀ + w₁·eFG_margin + w₂·TOV_edge + w₃·OREB_edge + w₄·FTA_margin across all 30 teams. R² = 0.987.
NBA_FFI_WEIGHTS in nba/ratings_config.py after the season concludes.| Four Factor | Proposed (data-driven) | Current (configured) | Status |
|---|---|---|---|
| EFG margin | 41.2% | 40.0% | ✓ |
| TOV edge | 40.4% | 25.0% | ◄ notable |
| OREB edge | 12.2% | 20.0% | ✓ |
| FTA margin | 6.2% | 15.0% | ◄ notable |
Proposed weights are derived by running OLS on the current season's 30 teams and normalising positive coefficients to sum to 1. They reflect within-season patterns only and should not be adopted until multi-season validation is complete (Phase 3B).
Methodology Notes
home_court_adj in ratings_config.py, which is in pts/100 poss. At ~100 poss/game these are roughly the same scale.