Nine XGBoost regressors. 3,813 player-season records. 347 features per observation. Two years of model design decisions — the feature pipeline, the training data assembly, the recency weighting scheme — all crystallised into models that finally ran on real data for the first time.
The baseline was trained on seasons 2001–2015, then asked to predict the 2016 season from scratch. It had never seen that data. Here's exactly what happened.
Accuracy by category · first holdout test (2016)
How each model performed.
Category
MAE
Accuracy
Grade
Note
Points
1.975
82.3%
B
Solid. Consistent predictor.
Rebounds
0.860
80.7%
B
Strong. Role-dependent.
Assists
0.557
76.3%
C+
Role changes cause misses.
Steals
0.170
78.3%
B-
Low variance, small MAE.
Blocks
0.153
68.3%
D+
High variance. Hardest cat.
3-Pointers
0.280
72.7%
C
Role / system dependent.
FG%
2.852
93.8%
A
Very stable year-to-year.
FT%
3.992
94.8%
A
Best predictor. Stable.
Turnovers
0.295
78.3%
B-
Usage-correlated. OK.
80.6%
Overall accuracy
9/9
Models trained
3,813
Training records
Rankings sanity gate
Top 10 overall — 2025-26 projections.
Before accepting the baseline models, we ran a sanity check: generate composite fantasy rankings from 2024 features, and verify that elite players appear at the top. The gate passed — the model correctly identifies the best fantasy players.
1
Victor Wembanyama
SAS · Elite BLK + PTS
2
Giannis Antetokounmpo
MIL · Dominant across all cats
3
Nikola Jokić
DEN · Elite AST + REB + PTS
4
Luka Dončić
DAL · Volume scorer, high AST
5
Shai Gilgeous-Alexander
OKC · STL + PTS elite
6
Jayson Tatum
BOS · Consistent across all cats
7
Anthony Edwards
MIN · Ascending scorer
8
Joel Embiid
PHI · Elite when healthy
9
Anthony Davis
LAL · BLK + REB elite
10
Kevin Durant
PHX · Efficient scorer, low TO
What the model learned
Top feature by category.
For most categories, the strongest predictor is simply the same stat from last season — persistence dominates. The exceptions are interesting: AST is best predicted by archetype peer average age (because passing-oriented archetypes hold usage longer as they age), and FT% is anchored by a binary flag for known poor free throw shooters.
Category
Top Feature
Importance
PTS
pts
0.342
REB
reb
0.291
AST
archetype_peer_avg_age
0.234
STL
stl
0.260
BLK
blk
0.315
3PM
three_pm
0.276
FG%
fg_pct_current
0.214
FT%
is_known_poor_ft_shooter
0.439
TO
high_to_risk_flag
0.271
SHAP explanations
Why the model made each call — coming in Task 17.
Walk-forward validation is complete. The models are calibrated. Next step: SHAP explanations — per-player, per-category explanations of exactly what drove each projection. Blue bars will push projections higher, pink bars lower. Every projection on the platform will have a plain-English reason attached to it.
SHAP waterfall charts are being built in Task 17. They'll appear here and in every player projection on the platform.