Model calibration audit

For every bucket of predicted probability, what did the model actually hit? A well-calibrated model has actual win rate ≈ predicted prob. A negative gap means the model is overconfident in that bucket (dangerous); positive gap means it's underpredicting (safe). Rows turn red when |gap| > 5pp AND N ≥ 10.

Calibration cohort by sport (click to filter):
All sports MLB N=2,748NCAAF N=1,323TENNIS_WTA N=746TENNIS_ATP N=652MMA_MIXED_MARTIAL_ARTS N=518NHL N=451LALIGA N=274AMERICANFOOTBALL_NFL N=271SERIEA N=226EPL N=224LIGUE1 N=195BUNDESLIGA N=179UCL N=158NFL_PRESEASON N=145CRICKET_IPL N=27NBA N=9

Combined "all sports" is rarely meaningful — sports differ in market efficiency, signal availability, and base rates. Use the chips to drill into a single sport. N<50 (red) means the calibration is brittle; N≥200 (green) is trustworthy.

Filter: window=90d · sport=mma_mixed_martial_arts

Overall: N = 518 · mean predicted 59.2% · actual win rate 58.7% · gap -0.5pp · Brier 0.219 · log-loss 0.629
Calibration by predicted-probability bucket.
Predicted-prob bucket N Mean predicted Actual win rate Gap (actual − predicted) Brier
<50% 135 40.3% 35.6% -4.7pp 0.229
50-55% 71 52.5% 60.6% +8.1pp 0.244
55-60% 58 57.7% 55.2% -2.6pp 0.246
60-65% 72 62.2% 61.1% -1.1pp 0.241
65-70% 60 67.0% 71.7% +4.7pp 0.205
70-75% 34 72.2% 73.5% +1.3pp 0.200
75-80% 39 77.1% 74.4% -2.8pp 0.191
80-90% 39 83.3% 79.5% -3.8pp 0.164
90%+ 10 93.9% 90.0% -3.9pp 0.089