Deep slate diagnosis — 20260915
- Games: 15 · hits 6 · misses 9 · winner accuracy 0.4
- Mean total-run bias on losses: 1.111 (negative = under-projected)
- Mean team-run error on losses: 5.556 · mean Brier on losses: 0.293
Loss primary drivers
- Small edge on the losing side: 3
- Several errors of similar size: 1
- Run environment far lower than projected (over-dispersed): 1
- Starting-pitcher projection was wrong: 3
- Backed the wrong side with real conviction: 1
High-level causal issue register
[HIGH] Canonical artifact warning requires reconciliation
- Domain:
artifact_integrity· affected: slate-wide - Evidence: structural audit totals: {'critical': 0, 'error': 0, 'warning': 1, 'info': 114}
- Action: Fix the flagged stat or presentation contract before treating this slate as clean evidence.
- Do not infer: A warning flags a display or contract issue; it does not prove the model picked the wrong side.
[HIGH] Published confidence buckets were poorly aligned on this slate
- Domain:
calibration· affected: ATL@CHC, BAL@NYM, BOS@TEX, CHW@CLE, DET@TOR, KC@HOU, LAD@CIN, MIA@ARI, MIL@PIT, NYY@MIN, OAK@TB, PHI@WAS, SD@COL, SEA@LAA, SF@STL - Evidence: weighted absolute calibration error 0.2795 across 15 games
- Action: Watch the same confidence buckets over the full rolling window before changing any calibration weight.
- Do not infer: A single slate has far too few games to establish a stable calibration curve.
[HIGH] Validated run models explain very little holdout variance
- Domain:
model_validation· affected: ATL@CHC, BAL@NYM, BOS@TEX, CHW@CLE, DET@TOR, KC@HOU, LAD@CIN, MIA@ARI, MIL@PIT, NYY@MIN, OAK@TB, PHI@WAS, SD@COL, SEA@LAA, SF@STL - Evidence: home/away/total R² = 0.0045/0.0275/0.0075
- Action: Treat exact run scores as low-confidence estimates, and look for stronger features or a better target before tuning the score tails.
- Do not infer: A small positive R² only means the model beats guessing the average; it does not make the exact scores reliable.
[INFO] Every settled game received structural QA
- Domain:
coverage· affected: ATL@CHC, BAL@NYM, BOS@TEX, CHW@CLE, DET@TOR, KC@HOU, LAD@CIN, MIA@ARI, MIL@PIT, NYY@MIN, OAK@TB, PHI@WAS, SD@COL, SEA@LAA, SF@STL - Evidence: 15/15 games structurally audited
- Action: Keep the per-game audit receipt in every report.
- Do not infer: Full audit coverage does not cancel the findings raised inside the audited games.
[INFO] Material calibrated-to-published movements have recorded lineage
- Domain:
probability_lineage· affected: BAL@NYM, BOS@TEX, DET@TOR, LAD@CIN, MIL@PIT, NYY@MIN, PHI@WAS, SD@COL, SEA@LAA, SF@STL - Evidence: 10 material movement(s), all explained by named score-coherence and/or recency transformations
- Action: Keep showing every probability layer and the named transformation between them.
- Do not infer: A published probability above the calibrated one is not a governor bypass when a recorded transformation explains it.
[INFO] Simulation produced no winner-direction intervention on this slate
- Domain:
simulation· affected: ATL@CHC, BAL@NYM, BOS@TEX, CHW@CLE, DET@TOR, KC@HOU, LAD@CIN, MIA@ARI, MIL@PIT, NYY@MIN, OAK@TB, PHI@WAS, SD@COL, SEA@LAA, SF@STL - Evidence: flip candidates 0; published flips 0
- Action: Measure the simulation's contribution across rolling slates, separating score realization from winner flipping.
- Do not infer: Zero winner flips is not a defect and does not mean the simulation did no score-reconciliation work.
Cross-slate trends (persistent-pattern memory)
- Window: 20260905, 20260906, 20260907, 20260908, 20260909, 20260910, 20260911, 20260912, 20260913, 20260914, 20260915 (10 prior slates loaded)
- Highest-confidence pick loss streak: 0 slate(s)
- Actionable pattern detected: True
Escalated persistent patterns
- simulation_inert_on_slate — 11 consecutive slates (11 in window)
- Target lever(s): simulation.allow_score
- Direction: confirm the simulation module is running, not silently no-oping
- Guardrail: simulation_inert_on_slate has persisted 11 consecutive slates; this is no longer single-slate noise. Treat it as an actionable pattern and raise the code/diagnostic action named; do not force a parameter move.
- weak_run_model_signal — 11 consecutive slates (11 in window)
- Target lever(s): training.xgb.n_estimators, training.xgb.max_depth, training.xgb.learning_rate
- Direction: investigate features/target via isolated training backtest (manual)
- Guardrail: weak_run_model_signal has persisted 11 consecutive slates; this is no longer single-slate noise. Treat it as an actionable pattern and raise the code/diagnostic action named; do not force a parameter move.
Metric direction across the window
winner_accuracy: regressing · series [0.5333, 0.6, 0.5455, 0.7333, 0.6667, 0.6, 0.6667, 0.5333, 0.6, 0.7, 0.4]weighted_calibration_error: regressing · series [0.1, 0.0937, 0.2611, 0.1825, 0.1069, 0.1171, 0.2091, 0.1711, 0.0827, 0.2812, 0.2795]margin_bias: regressing · series [-1.467, -1.467, -0.182, -0.867, -2.133, -1.0, -2.933, -2.667, -1.8, -0.4, -1.667]mean_team_run_error_on_losses: flat · series [5.286, 5.333, 3.8, 6.75, 5.6, 6.5, 5.0, 6.143, 5.0, 6.333, 5.556]
Pipeline stage quality
historical_ml: winner 7/15 (0.4667), team-run MAE 2.3789, margin MAE 3.6102variance_applied: winner 7/15 (0.4667), team-run MAE 2.4, margin MAE 3.6enhanced_prediction: winner 7/15 (0.4667), team-run MAE 2.6667, margin MAE 3.7333embedded_savant_run_environment: winner 7/15 (0.4667), team-run MAE 2.7, margin MAE 3.6667fundamental_edge_target_review: winner 6/15 (0.4), team-run MAE 2.7667, margin MAE 3.8capped_target: winner 6/15 (0.4), team-run MAE 2.7667, margin MAE 3.8simulation_result: winner 6/15 (0.4), team-run MAE 2.7667, margin MAE 3.8published_final: winner 6/15 (0.4), team-run MAE 2.7667, margin MAE 3.8
Probability lineage
- ATL@CHC: raw 0.5467 → calibrated 0.5417 → published 0.5355; no recorded transformation explains the publication delta
- BAL@NYM: raw 0.6158 → calibrated 0.6001 → published 0.53; score coherence followed by matchup-recency guardrail
- BOS@TEX: raw 0.5621 → calibrated 0.537 → published 0.5152; score coherence followed by matchup-recency guardrail
- CHW@CLE: raw 0.5858 → calibrated 0.5617 → published 0.5446; score coherence followed by matchup-recency guardrail
- DET@TOR: raw 0.6269 → calibrated 0.5945 → published 0.5622; score coherence followed by matchup-recency guardrail
- KC@HOU: raw 0.5855 → calibrated 0.549 → published 0.53; score coherence followed by matchup-recency guardrail
- LAD@CIN: raw 0.7657 → calibrated 0.7434 → published 0.58; score coherence followed by matchup-recency guardrail
- MIA@ARI: raw 0.5966 → calibrated 0.555 → published 0.5467; score coherence followed by matchup-recency guardrail
- MIL@PIT: raw 0.6158 → calibrated 0.6425 → published 0.56; score coherence followed by matchup-recency guardrail
- NYY@MIN: raw 0.6729 → calibrated 0.6532 → published 0.57; score coherence followed by matchup-recency guardrail
- OAK@TB: raw 0.804 → calibrated 0.6674 → published 0.6674; published probability matches the calibrated/governed value
- PHI@WAS: raw 0.6037 → calibrated 0.568 → published 0.5331; score coherence followed by matchup-recency guardrail
- SD@COL: raw 0.6411 → calibrated 0.6975 → published 0.58; score coherence followed by matchup-recency guardrail
- SEA@LAA: raw 0.61 → calibrated 0.5686 → published 0.53; score coherence followed by matchup-recency guardrail
- SF@STL: raw 0.5996 → calibrated 0.5735 → published 0.5531; score coherence followed by matchup-recency guardrail
Every game, in detail
ATL@CHC — ❌ miss
- Predicted CHC 4-5 (conf +0.07, lean) · actual ATL 6-3
- Root cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.286731 · team-run err 4.0 · total bias +0
BAL@NYM — ❌ miss
- Predicted NYM 4-5 (conf +0.06, lean) · actual BAL 7-5
- Root cause: Several errors of similar size
- Errors: winner WRONG · Brier 0.2809 · team-run err 3.0 · total bias -3
- Contributing factors:
- total runs under-projected by 3 (9 vs 12)
- BAL offense under-projected by 3
BOS@TEX — ❌ miss
- Predicted BOS 7-6 (conf -0.03, toss_up) · actual TEX 2-4
- Root cause: Run environment far lower than projected (over-dispersed)
- Secondary cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.265392 · team-run err 7.0 · total bias +7
- Contributing factors:
- total runs over-projected by 7 (13 vs 6)
- BOS offense over-projected by 5
CHW@CLE — ❌ miss
- Predicted CHW 5-4 (conf -0.09, lean) · actual CLE 6-7
- Root cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.29656 · team-run err 4.0 · total bias -4
- Contributing factors:
- total runs under-projected by 4 (9 vs 13)
- CLE offense under-projected by 3
DET@TOR — ✅ hit
- Predicted DET 5-4 (conf -0.12, moderate) · actual DET 10-1
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.191656 · team-run err 8.0 · total bias -2
- Contributing factors:
- DET offense under-projected by 5
- TOR offense over-projected by 3
- Drew Anderson (DET) allowed 3 fewer ER than projected (0 vs 3)
- Braydon Fisher (TOR) allowed 3 fewer ER than projected (0 vs 3)
KC@HOU — ✅ hit
- Predicted HOU 3-4 (conf +0.06, lean) · actual HOU 2-4
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.2209 · team-run err 1.0 · total bias +1
LAD@CIN — ✅ hit
- Predicted LAD 9-5 (conf -0.16, moderate) · actual LAD 4-0
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1764 · team-run err 10.0 · total bias +10
- Contributing factors:
- total runs over-projected by 10 (14 vs 4)
- LAD offense over-projected by 5
- CIN offense over-projected by 5
MIA@ARI — ❌ miss
- Predicted ARI 4-6 (conf +0.09, lean) · actual MIA 4-2
- Root cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.298921 · team-run err 4.0 · total bias +4
- Contributing factors:
- total runs over-projected by 4 (10 vs 6)
- ARI offense over-projected by 4
MIL@PIT — ✅ hit
- Predicted MIL 5-2 (conf -0.12, moderate) · actual MIL 5-1
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.1936 · team-run err 1.0 · total bias +1
NYY@MIN — ✅ hit
- Predicted NYY 6-3 (conf -0.14, moderate) · actual NYY 8-1
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.1849 · team-run err 4.0 · total bias +0
OAK@TB — ✅ hit
- Predicted TB 4-8 (conf +0.33, strong) · actual TB 1-2
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1106 · team-run err 9.0 · total bias +9
- Contributing factors:
- total runs over-projected by 9 (12 vs 3)
- OAK offense over-projected by 3
- TB offense over-projected by 6
- Jack Perkins (OAK) allowed 4 fewer ER than projected (0 vs 4)
- Griffin Jax (TB) allowed 4 fewer ER than projected (0 vs 4)
PHI@WAS — ❌ miss
- Predicted PHI 6-5 (conf -0.07, lean) · actual WAS 3-6
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.284244 · team-run err 4.0 · total bias +2
- Contributing factors:
- PHI offense over-projected by 3
- Cristopher Sánchez (PHI) allowed 4 more ER than projected (5 vs 1)
SD@COL — ❌ miss
- Predicted SD 9-5 (conf -0.16, moderate) · actual COL 3-9
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Backed the wrong side with real conviction
- Errors: winner WRONG · Brier 0.3364 · team-run err 10.0 · total bias +2
- Contributing factors:
- SD offense over-projected by 6
- COL offense under-projected by 4
- Kyle Freeland (COL) allowed 4 fewer ER than projected (3 vs 7)
- committed to SD at 0.16 confidence and it lost
SEA@LAA — ❌ miss
- Predicted SEA 5-4 (conf -0.06, lean) · actual LAA 1-2
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Run environment far lower than projected (over-dispersed)
- Errors: winner WRONG · Brier 0.2809 · team-run err 6.0 · total bias +6
- Contributing factors:
- total runs over-projected by 6 (9 vs 3)
- SEA offense over-projected by 4
- Ryan Johnson (LAA) allowed 4 fewer ER than projected (1 vs 5)
SF@STL — ❌ miss
- Predicted STL 4-5 (conf +0.11, moderate) · actual SF 10-3
- Root cause: Backed the wrong side with real conviction
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.305938 · team-run err 8.0 · total bias -4
- Contributing factors:
- total runs under-projected by 4 (9 vs 13)
- SF offense under-projected by 6
- committed to STL at 0.11 confidence and it lost
Cross-game lever tension
Each candidate fix, with the games it would help and the games it would hurt. A lever that repairs one game and breaks two is visible here before it is proposed.
score.variance_multiplier / score.variance_floor (widen run distributions)
- Targets: brier_score, calibration_error
- Net: 2 helped vs 1 hurt
- Would help:
- SD@COL (miss): lost a 0.16-confidence pick; wider tails lower overconfidence
- SF@STL (miss): lost a 0.11-confidence pick; wider tails lower overconfidence
- Would hurt / risk:
- OAK@TB (hit): strong correct call at 0.33; widening softens a good edge
player.pitcher.v4 form weights / player.pitcher_prior_games
- Targets: starter_er_mae, starter_outs_mae
- Net: 5 helped vs 3 hurt
- Would help:
- DET@TOR (hit): starter ER off by 3
- OAK@TB (hit): starter ER off by 4
- PHI@WAS (miss): starter ER off by 4
- SD@COL (miss): starter ER off by 4
- SEA@LAA (miss): starter ER off by 4
- Would hurt / risk:
- ATL@CHC (miss): starter projection was accurate (ER off 1); reweight risks disturbing it
- BAL@NYM (miss): starter projection was accurate (ER off 1); reweight risks disturbing it
- NYY@MIN (hit): starter projection was accurate (ER off 1); reweight risks disturbing it
recent. / season. run-mean weighting
- Targets: team_run_mae, total_run_mae, accuracy
- Net: 12 helped vs 2 hurt
- Would help:
- ATL@CHC (miss): team runs off by 4
- BOS@TEX (miss): team runs off by 7
- CHW@CLE (miss): team runs off by 4
- DET@TOR (hit): team runs off by 8
- LAD@CIN (hit): team runs off by 10
- MIA@ARI (miss): team runs off by 4
- NYY@MIN (hit): team runs off by 4
- OAK@TB (hit): team runs off by 9
- PHI@WAS (miss): team runs off by 4
- SD@COL (miss): team runs off by 10
- SEA@LAA (miss): team runs off by 6
- SF@STL (miss): team runs off by 8
- Would hurt / risk:
- KC@HOU (hit): team runs already close (off 1); reweight risks disturbing it
- MIL@PIT (hit): team runs already close (off 1); reweight risks disturbing it