NBA 3PM Model Diagnostics
KSplit NBA model · 2026-27 · graded Oct 20 through Nov 9
How to read this page
The question here is whether the probabilities are honest: when the model says 30%, does it happen about 30% of the time? Every graded 3PM line counts, not a hand-picked set of bets. A z beyond ±2 in a bucket with a real sample is a miscalibration; inside ±2 is normal noise. Updated every night after games are graded.
Probabilities are the final pre-tip numbers, blended with the market the same way as on the 3PM projections page. Pushes and players who didn't play are excluded.
Main lines graded
1,691
predicted 46.4% · actual 45.4%
Vs market (log loss)
+0.32%
z +1.30 · positive = model sharper
Beat the close
45.7%
1,691 lines · avg CLV +0.02%
3PM error per player
0.86
bias -0.02 · 3,363 player-games
Main line calibration
Probability of the over on every graded 3PM main line, bucketed. Points on the dashed line are perfectly calibrated; the bars are 95% ranges, and bigger dots are bigger samples.
| Predicted | Lines | Avg pred | Actual | Gap | 95% range | z |
|---|---|---|---|---|---|---|
| 20-30% | 37 | 27.3% | 24.3% | -2.9% | 13% to 40% | -0.40 |
| 30-35% | 139 | 33.1% | 31.6% | -1.4% | 25% to 40% | -0.35 |
| 35-40% | 278 | 37.7% | 38.9% | +1.2% | 33% to 45% | +0.40 |
| 40-45% | 357 | 42.5% | 42.3% | -0.2% | 37% to 47% | -0.07 |
| 45-50% | 279 | 47.4% | 50.9% | +3.5% | 45% to 57% | +1.18 |
| 50-55% | 235 | 52.4% | 46.8% | -5.6% | 41% to 53% | -1.73 |
| 55-60% | 218 | 57.5% | 57.3% | -0.2% | 51% to 64% | -0.06 |
| 60-65% | 129 | 62.2% | 55.0% | -7.2% | 46% to 63% | -1.68 |
Model leans over
542 lines · said 51.7% · hit 49.5% · z -1.06
Model leans under
1,149 lines · said 56.1% · hit 56.6% · z +0.31
Model vs market: log loss 0.6782 vs 0.6804 for the de-vigged market on 1,691 lines, 0.32% better (z +1.30).
Ladder rung calibration
Every priced +1, +2 and +3 rung this season (one, two and three more threes than the main line), the blended probability vs how often it hit.
| Rung | Lines | Avg pred | Actual | Gap | z |
|---|---|---|---|---|---|
| +1 | 1,611 | 23.7% | 23.7% | +0.0% | +0.02 |
| +2 | 1,592 | 10.8% | 10.7% | -0.1% | -0.20 |
| +3 | 1,511 | 4.7% | 3.0% | -1.7% | -3.09 |
| Predicted | Lines | Avg pred | Actual | Gap | 95% range | z |
|---|---|---|---|---|---|---|
| 0-3% | 395 | 2.4% | 1.5% | -0.8% | 1% to 3% | -1.09 |
| 3-6% | 953 | 4.4% | 3.4% | -1.1% | 2% to 5% | -1.62 |
| 6-10% | 919 | 7.8% | 6.3% | -1.5% | 5% to 8% | -1.73 |
| 10-15% | 753 | 12.4% | 13.3% | +0.9% | 11% to 16% | +0.77 |
| 15-20% | 561 | 17.5% | 18.4% | +0.9% | 15% to 22% | +0.55 |
| 20-25% | 449 | 22.3% | 22.7% | +0.4% | 19% to 27% | +0.20 |
| 25-30% | 333 | 27.4% | 25.8% | -1.6% | 21% to 31% | -0.65 |
| 30-40% | 335 | 33.7% | 31.6% | -2.0% | 27% to 37% | -0.78 |
| 40-100% | 16 | 41.5% | 31.3% | -10.2% | 14% to 56% | -0.83 |
Blend vs market: log loss 0.3396 vs 0.3471 for the de-vigged market on 4,714 lines, 2.14% better (z +4.85).
Main line results by EV and edge band
Every graded main line, betting the side the model leans at the final best price, flat stakes (minus odds risk to win 1u, plus odds risk 1u). These are not the Discord plays: it's the whole board, so the low bands are expected to lose. Actual ROI tracking expected ROI is the check.
| Band | Lines | W-L | Avg prob | Hit | P/L | ROI | Expected ROI | z |
|---|---|---|---|---|---|---|---|---|
| Negative | 1,029 | 555-474 | 54.3% | 53.9% | -56.37u | -3.9% | -2.8% | -0.38 |
| 0-4% | 446 | 239-207 | 54.7% | 53.6% | -9.73u | -1.7% | +1.7% | -0.78 |
| 4-8% | 129 | 72-57 | 54.9% | 55.8% | +13.97u | +8.6% | +5.4% | +0.39 |
| 8-12% | 44 | 23-21 | 57.6% | 52.3% | -0.06u | -0.1% | +9.8% | -0.71 |
| 12-20% | 26 | 20-6 | 57.1% | 76.9% | +17.37u | +56.1% | +15.3% | +2.15 |
| 20%+ | 15 | 8-7 | 66.0% | 53.3% | +1.33u | +7.5% | +28.4% | -0.90 |
EV = the model's probability at the posted price, per unit risked.
Ladder results by EV and edge band
Every priced +1, +2 and +3 rung this season, the over at its best price from the last pre-tip run, flat 1u. These are not the Discord ladder posts: it's every rung on the board, so the low bands are expected to lose. Actual ROI tracking expected ROI is the check.
| Band | Rungs | Median odds | W-L | Avg prob | Hit | P/L | ROI | Expected ROI | z |
|---|---|---|---|---|---|---|---|---|---|
| -30% or less | 1,542 | +1620 | 51-1491 | 4.7% | 3.3% | -817.52u | -52.4% | -30.5% | -2.54 |
| -30 to -15% | 1,364 | +800 | 136-1228 | 11.1% | 10.0% | -317.07u | -23.3% | -11.3% | -1.54 |
| -15 to 0% | 1,357 | +380 | 288-1069 | 20.3% | 21.2% | +104.50u | +7.7% | -2.1% | +1.65 |
| 0-10% | 374 | +280 | 96-278 | 27.3% | 25.7% | +25.51u | +6.8% | +7.6% | -0.07 |
| 10-20% | 73 | +255 | 27-46 | 30.8% | 37.0% | +40.19u | +55.0% | +18.2% | +1.64 |
Edge = how far the blended probability is from the de-vigged market probability for that rung, relative to the market: a rung the market has at 5% and the blend at 6% is +20%. +1 is one more three than the main line, +2 two more, +3 three more. A band shows once it has 15 rungs.
Projection accuracy
Projected 3PA and 3PM (first final pre-tip run) against what each player actually did, grouped by projected threes. Players who didn't play are excluded.
| Projected 3PM | Player-games | Proj 3PA | Actual 3PA | Proj 3PM | Actual 3PM | 3PM diff |
|---|---|---|---|---|---|---|
| 0.0-0.5 | 899 | 0.55 | 0.71 | 0.19 | 0.21 | +0.02 |
| 0.5-1.0 | 653 | 2.13 | 2.25 | 0.74 | 0.78 | +0.04 |
| 1.0-1.5 | 648 | 3.52 | 3.54 | 1.26 | 1.20 | -0.06 |
| 1.5-2.0 | 548 | 4.78 | 4.81 | 1.73 | 1.63 | -0.10 |
| 2.0-2.5 | 322 | 6.06 | 5.82 | 2.24 | 2.10 | -0.14 |
| 2.5-3.0 | 186 | 7.25 | 7.46 | 2.72 | 2.77 | +0.05 |
| 3.0-3.5 | 73 | 8.52 | 8.07 | 3.23 | 3.04 | -0.19 |
| 3.5+ | 34 | 10.30 | 11.09 | 3.87 | 4.29 | +0.42 |
Average miss per player: 0.86 threes made (bias -0.02), 1.47 attempts (bias +0.06).
Week by week
Main lines graded each week: the average predicted over rate against the actual, and log loss for the model and the market (lower is better).
| Week of | Lines | Avg pred | Actual | Gap | Model LL | Market LL |
|---|---|---|---|---|---|---|
| Nov 9 | 82 | 47.4% | 54.9% | +7.5% | 0.7198 | 0.7160 |
| Nov 2 | 560 | 47.6% | 44.6% | -2.9% | 0.6744 | 0.6776 |
| Oct 26 | 571 | 46.1% | 44.8% | -1.3% | 0.6808 | 0.6814 |
| Oct 19 | 478 | 45.1% | 45.2% | +0.1% | 0.6725 | 0.6762 |