NBA edges on Polymarket
A model that looks for mispriced NBA markets on Polymarket. In one week, 12 positions in a row won, compounding about $5k into $60k+.
The play
A Polymarket price is a win chance: the crowd's chance. My model gives every NBA game its own win chance, from facts known before tipoff. Where the two clearly disagree, one side is underpriced, and over many bets that gap is the expected profit. Everywhere else, I do nothing.
The market price is only the thing I compare against. It never goes into the model.

The backtest
Two regular seasons, 2024-25 and 2025-26: the only two where Polymarket had a real market for every game.
| Season | Bets won | Return per $1 bet |
|---|---|---|
| 2024-25 | 64% | +9.3% |
| 2025-26 | 61% | +6.0% |
~2,600 games with a usable market price~10 bets a week, under 2 a day
How the test keeps score
- Real prices. Each test bet pays the price you could actually buy at, at one fixed time before the game. $1 a bet, each game at most once.
- No hindsight. Each test day uses only data dated before that game, and every prediction is frozen at tipoff.
- Unseen games. A change to the model stays only if it does better on games it never saw. Each season is reported on its own.
- The price moves my way. In both seasons, the market price moved toward my pick before tipoff.
The story, in four quarters
- Q1
It starts inside a bigger personal sports dashboard that also placed trades on Polymarket. One week brings the 12–0 run at the top of this page.
- Q2
The NBA part moves into its own project, so it can be tested and tuned alone before the new season. Two past seasons of game data are rebuilt from scratch.
- Q3
Two full seasons of past Polymarket pregame prices are collected, for a clean test against the real market. The current model goes live after many tested versions.
- Q4
The 2026-27 season opens. The model's numbers are recorded before each tipoff, and the live record starts.
The code, data and models are private.