Nothing here is staked, and nothing has a record against Kalshi yet. Each rung shows the model's own chance next to Kalshi's price. The price we publish leans on the market: Kalshi's number moved 25% of the way toward the model, until graded rungs show the model deserves more weight. A rung is marked value only when one side is at least 7% cheaper than that published price after Kalshi's fee, with the model between 20% and 80% and within 15 points of Kalshi's own price (a bigger disagreement usually means the market knows something the model doesn't). Every rung is logged and graded, and the record below fills in as games finish.
A player who doesn't play records nothing, so his overs lose. Probabilities are cut by the injury report, on the game board's own scale: Probable plays 90% of the time here, Day-to-day 60%, Questionable half, Doubtful a quarter. When a teammate is out, his shots and minutes go somewhere, and the projection knows it.
Graded so far
13463 rungs graded. Brier score (lower is better): model 0.1595, published 0.1546, Kalshi's own price 0.1558. The market's prices have been more accurate than the model's. The graded rungs support moving Kalshi's price 25% toward the model.
Value flags: 0-1 (0.0%), -0.19 per-contract units, line movement +21.5¢ toward the model.
Board
What the backtest found
Walk-forward, 2021-22 to 2025-26: every season projected by models trained only on the seasons before it. There's no free archive of past prop prices, so this scores the model against what happened, not against the market. "Line" here is the player's own trailing average, a crude opener. Books set lines with far more than that, so these rates flatter the model. They show it's competent, not that it has an edge.
| Market | Error vs trailing avg | Brier vs trailing avg | Confident side hit | "Always under" |
|---|---|---|---|---|
| Points | 4.866 vs 4.995 | 0.239 vs 0.2474 | 65.4% n=4260 | 54.8% |
| Rebounds | 1.968 vs 2.002 | 0.2387 vs 0.2452 | 64.9% n=4301 | 54.9% |
| Assists | 1.423 vs 1.454 | 0.2347 vs 0.2416 | 67.0% n=5406 | 55.5% |
| Threes | 1.068 vs 1.08 | 0.2335 vs 0.2384 | 66.8% n=5935 | 57.0% |
The "always under" column is the reason to read the one beside it carefully. A stat line's average sits above its median - one 40-point night lifts a scorer's average more than one 12-point night drags it - so a line at the average goes under more often than not. A model has to beat that, not 50%. The Brier column is the better test: lower is better, and it scores the probabilities themselves.