███╗ ██╗██████╗ █████╗ ███╗ ███╗ ██████╗ ██████╗ ███████╗██╗
████╗ ██║██╔══██╗██╔══██╗ ████╗ ████║██╔═══██╗██╔══██╗██╔════╝██║
██╔██╗ ██║██████╔╝███████║ ██╔████╔██║██║ ██║██║ ██║█████╗ ██║
██║╚██╗██║██╔══██╗██╔══██║ ██║╚██╔╝██║██║ ██║██║ ██║██╔══╝ ██║
██║ ╚████║██████╔╝██║ ██║ ██║ ╚═╝ ██║╚██████╔╝██████╔╝███████╗███████╗
╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝
> paper-trading XGBoost player-props on Polymarket. bankroll seeded at $1,000 on —.
> edge < 5% = PASS. 2% flat stake. everything below is simulated cash.
// EQUITY_CURVE.log
// FUTURE_BETS.tbl
0 open · awaiting tip-off| DATE | PLAYER | STAT | LINE | SIDE | PRICE | P(MODEL) | EDGE | STAKE | STATUS |
|---|
// CLOSED_TRADES.tbl
| DATE | PLAYER | STAT | LINE | SIDE | PRICE | EDGE | ACTUAL | STAKE | P&L | RESULT |
|---|
// MODEL.spec
what you're watching
> model
Three XGBoost binary classifiers — one each for
points, rebounds, assists —
predicting whether a player goes OVER their Polymarket line. Gradient-boosted decision trees with
Optuna-tuned hyperparameters and isotonic calibration on top so the output
probabilities line up with observed hit-rates. ~123 engineered features per prop:
10-game rolling averages for the stat, rest days / back-to-backs, home vs away, opponent defensive
rating by stat, and regime flags (is_playoffs, is_final_week,
days_until_reg_end). Bets only placed when model edge ≥ 5% vs the market price; flat 2% of
bankroll per bet.
> data
23,761 labeled Polymarket NBA player-prop markets from the 2025-26 season
(Polymarket has only listed NBA props since Dec 2025). Training window Dec 2025 → Feb 2026, held-out
validation on March 2026. Box-score ground truth pulled from nba_api; settlement in prod
uses the ESPN public API. > accuracy test-set AUC
0.676 (assists, best), 0.569 (points),
0.554 (rebounds); calibrated log-loss 0.668 / 0.678 / 0.694.
> caveat
the backtest's headline ROI is mostly a late-regular-season OVER bias — the model
does not beat a naive "always OVER in the last 2 weeks" baseline. this dashboard tracks live
paper performance precisely so that claim gets tested honestly, slate by slate.