Deep slate diagnosis — 20260922
- Games: 15 · hits 6 · misses 9 · winner accuracy 0.4
- Mean total-run bias on losses: 1.556 (negative = under-projected)
- Mean team-run error on losses: 6.222 · mean Brier on losses: 0.317
Loss primary drivers
- Small edge on the losing side: 1
- Run environment far higher than projected (under-dispersed): 1
- Starting-pitcher projection was wrong: 2
- Genuine toss-up that flipped: 1
- Backed the wrong side with real conviction: 4
High-level causal issue register
[CRITICAL] Published probability differs materially without a recorded transformation
- Domain:
probability_lineage· affected: WAS@DET - Evidence: 1 game(s) have an unexplained ≥2pp calibrated-to-published delta
- Action: Block any promotion until the missing probability transformation is recorded and reconciled.
- Do not infer: Do not assume the probability governor was bypassed until you have traced the pick-side math.
[HIGH] Published confidence buckets were poorly aligned on this slate
- Domain:
calibration· affected: ARI@COL, CHW@KC, CIN@ATL, CLE@BOS, HOU@SEA, LAA@OAK, MIA@CHC, MIL@PHI, MIN@SF, NYM@TEX, SD@LAD, STL@PIT, TB@NYY, TB@NYY, WAS@DET - Evidence: weighted absolute calibration error 0.1881 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: ARI@COL, CHW@KC, CIN@ATL, CLE@BOS, HOU@SEA, LAA@OAK, MIA@CHC, MIL@PHI, MIN@SF, NYM@TEX, SD@LAD, STL@PIT, TB@NYY, TB@NYY, WAS@DET - Evidence: home/away/total R² = 0.0172/0.0294/0.0090
- 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.
[MEDIUM] Most high-raw picks lost before/after shrinkage
- Domain:
calibration· affected: CIN@ATL, HOU@SEA, MIA@CHC - Evidence: 0/3 games with raw pick probability ≥0.65 won
- Action: Track how often high-raw-probability picks lose across multiple slates, and keep the raw to calibrated to published lineage.
- Do not infer: This one slate is not enough to justify a new per-bucket shrinkage rule.
[INFO] Every settled game received structural QA
- Domain:
coverage· affected: ARI@COL, CHW@KC, CIN@ATL, CLE@BOS, HOU@SEA, LAA@OAK, MIA@CHC, MIL@PHI, MIN@SF, NYM@TEX, SD@LAD, STL@PIT, TB@NYY, TB@NYY, WAS@DET - Evidence: 16/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] Simulation produced no winner-direction intervention on this slate
- Domain:
simulation· affected: ARI@COL, CHW@KC, CIN@ATL, CLE@BOS, HOU@SEA, LAA@OAK, MIA@CHC, MIL@PHI, MIN@SF, NYM@TEX, SD@LAD, STL@PIT, TB@NYY, TB@NYY, WAS@DET - 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: 20260912, 20260913, 20260914, 20260915, 20260916, 20260917, 20260918, 20260919, 20260920, 20260921, 20260922 (10 prior slates loaded)
- Highest-confidence pick loss streak: 2 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.
- single_slate_calibration_instability — 4 consecutive slates (8 in window)
- Target lever(s): confidence.empirical_max_weight, confidence.base_cap, confidence.moderate_cap
- Direction: increase empirical shrinkage
- Guardrail: single_slate_calibration_instability has persisted 4 consecutive slates; this is no longer single-slate noise. Treat it as an actionable pattern and propose a bounded shadow experiment against a target lever.
- 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.7, 0.4, 0.6667, 0.4444, 0.6667, 0.7333, 0.6, 0.3333, 0.4]weighted_calibration_error: improving · series [0.1711, 0.0827, 0.2812, 0.2795, 0.1661, 0.1016, 0.1247, 0.3458, 0.3184, 0.2028, 0.1881]margin_bias: regressing · series [-2.667, -1.8, -0.4, -1.667, -1.133, -2.111, -2.0, -0.667, -1.533, -2.667, -1.867]mean_team_run_error_on_losses: regressing · series [6.143, 5.0, 6.333, 5.556, 6.4, 3.6, 5.2, 6.5, 6.5, 3.0, 6.222]
Pipeline stage quality
historical_ml: winner 7/15 (0.4667), team-run MAE 2.9066, margin MAE 3.4277variance_applied: winner 6/15 (0.4), team-run MAE 2.9667, margin MAE 3.5333enhanced_prediction: winner 7/15 (0.4667), team-run MAE 3.2, margin MAE 4.0embedded_savant_run_environment: winner 6/15 (0.4), team-run MAE 3.1667, margin MAE 4.0667fundamental_edge_target_review: winner 6/15 (0.4), team-run MAE 3.2, margin MAE 4.1333capped_target: winner 6/15 (0.4), team-run MAE 3.2, margin MAE 4.1333simulation_result: winner 6/15 (0.4), team-run MAE 3.2, margin MAE 4.1333published_final: winner 6/15 (0.4), team-run MAE 3.2, margin MAE 4.1333
Probability lineage
- ARI@COL: raw 0.6408 → calibrated 0.6224 → published 0.56; score coherence followed by matchup-recency guardrail
- CHW@KC: raw 0.5 → calibrated 0.5073 → published 0.5053; published probability matches the calibrated/governed value
- CIN@ATL: raw 0.6937 → calibrated 0.699 → published 0.6; score coherence followed by matchup-recency guardrail
- CLE@BOS: raw 0.5 → calibrated 0.5073 → published 0.5053; published probability matches the calibrated/governed value
- HOU@SEA: raw 0.6546 → calibrated 0.6409 → published 0.6; score coherence followed by matchup-recency guardrail
- LAA@OAK: raw 0.5132 → calibrated 0.5602 → published 0.53; score coherence followed by matchup-recency guardrail
- MIA@CHC: raw 0.6927 → calibrated 0.6546 → published 0.53; score coherence followed by matchup-recency guardrail
- MIL@PHI: raw 0.537 → calibrated 0.6768 → published 0.6; score coherence followed by matchup-recency guardrail
- MIN@SF: raw 0.5367 → calibrated 0.5232 → published 0.5154; score coherence followed by matchup-recency guardrail
- NYM@TEX: raw 0.5722 → calibrated 0.6009 → published 0.6009; published probability matches the calibrated/governed value
- SD@LAD: raw 0.6139 → calibrated 0.5641 → published 0.53; score coherence followed by matchup-recency guardrail
- STL@PIT: raw 0.5625 → calibrated 0.5535 → published 0.5387; score coherence followed by matchup-recency guardrail
- TB@NYY: raw 0.5842 → calibrated 0.5483 → published 0.5349; score coherence followed by matchup-recency guardrail
- TB@NYY: raw 0.5501 → calibrated 0.5286 → published 0.5206; score coherence followed by matchup-recency guardrail
- WAS@DET: raw 0.6101 → calibrated 0.5929 → published 0.5709; no recorded transformation explains the publication delta
Every game, in detail
ARI@COL — ✅ hit
- Predicted ARI 6-5 (conf -0.12, moderate) · actual ARI 7-2
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.1936 · team-run err 4.0 · total bias +2
- Contributing factors:
- COL offense over-projected by 3
CHW@KC — ✅ hit
- Predicted CHW 5-4 (conf -0.01, toss_up) · actual CHW 14-11
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.244771 · team-run err 16.0 · total bias -16
- Contributing factors:
- total runs under-projected by 16 (9 vs 25)
- CHW offense under-projected by 9
- KC offense under-projected by 7
- Daniel Lynch IV (KC) allowed 8 more ER than projected (9 vs 1)
CIN@ATL — ❌ miss
- Predicted ATL 6-9 (conf +0.20, strong) · actual CIN 4-0
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Run environment far lower than projected (over-dispersed)
- Errors: winner WRONG · Brier 0.36 · team-run err 11.0 · total bias +11
- Contributing factors:
- total runs over-projected by 11 (15 vs 4)
- ATL offense over-projected by 9
- Brandon Williamson (CIN) allowed 5 fewer ER than projected (0 vs 5)
- committed to ATL at 0.20 confidence and it lost
CLE@BOS — ❌ miss
- Predicted BOS 3-4 (conf +0.01, toss_up) · actual CLE 3-2
- Root cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.255285 · team-run err 2.0 · total bias +2
HOU@SEA — ❌ miss
- Predicted SEA 3-5 (conf +0.20, strong) · actual HOU 7-0
- Root cause: Backed the wrong side with real conviction
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.36 · team-run err 9.0 · total bias +1
- Contributing factors:
- HOU offense under-projected by 4
- SEA offense over-projected by 5
- Cristian Javier (HOU) allowed 3 fewer ER than projected (0 vs 3)
- committed to SEA at 0.20 confidence and it lost
LAA@OAK — ❌ miss
- Predicted LAA 5-4 (conf -0.06, lean) · actual OAK 7-9
- Root cause: Run environment far higher than projected (under-dispersed)
- Errors: winner WRONG · Brier 0.2809 · team-run err 7.0 · total bias -7
- Contributing factors:
- total runs under-projected by 7 (9 vs 16)
- OAK offense under-projected by 5
MIA@CHC — ❌ miss
- Predicted CHC 4-6 (conf +0.06, lean) · actual MIA 8-2
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.2809 · team-run err 8.0 · total bias +0
- Contributing factors:
- MIA offense under-projected by 4
- CHC offense over-projected by 4
- Janson Junk (MIA) allowed 5 fewer ER than projected (0 vs 5)
MIL@PHI — ❌ miss
- Predicted MIL 7-4 (conf -0.20, strong) · actual PHI 4-6
- Root cause: Backed the wrong side with real conviction
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.36 · team-run err 5.0 · total bias +1
- Contributing factors:
- MIL offense over-projected by 3
- committed to MIL at 0.20 confidence and it lost
MIN@SF — ✅ hit
- Predicted MIN 5-3 (conf -0.03, toss_up) · actual MIN 3-2
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.234816 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (8 vs 5)
NYM@TEX — ❌ miss
- Predicted TEX 4-6 (conf +0.20, strong) · actual NYM 6-3
- Root cause: Backed the wrong side with real conviction
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.361104 · team-run err 5.0 · total bias +1
- Contributing factors:
- TEX offense over-projected by 3
- committed to TEX at 0.20 confidence and it lost
SD@LAD — ✅ hit
- Predicted LAD 4-6 (conf +0.06, lean) · actual LAD 0-7
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.2209 · team-run err 5.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (10 vs 7)
- SD offense over-projected by 4
STL@PIT — ✅ hit
- Predicted PIT 4-5 (conf +0.08, lean) · actual PIT 0-2
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.212833 · team-run err 7.0 · total bias +7
- Contributing factors:
- total runs over-projected by 7 (9 vs 2)
- STL offense over-projected by 4
- PIT offense over-projected by 3
TB@NYY — ✅ hit
- Predicted NYY 3-4 (conf +0.07, lean) · actual NYY 0-2
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.216301 · team-run err 5.0 · total bias +5
- Contributing factors:
- total runs over-projected by 5 (7 vs 2)
- TB offense over-projected by 3
- Carlos Rodón (NYY) allowed 3 more ER than projected (4 vs 1)
TB@NYY — ❌ miss
- Predicted NYY 4-5 (conf +0.04, lean) · actual TB 6-1
- Root cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.271061 · team-run err 6.0 · total bias +2
- Contributing factors:
- NYY offense over-projected by 4
WAS@DET — ❌ miss
- Predicted DET 3-4 (conf +0.14, moderate) · actual WAS 3-1
- Root cause: Backed the wrong side with real conviction
- Errors: winner WRONG · Brier 0.325966 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (7 vs 4)
- DET offense over-projected by 3
- committed to DET at 0.14 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: 5 helped vs 0 hurt
- Would help:
- CIN@ATL (miss): lost a 0.20-confidence pick; wider tails lower overconfidence
- HOU@SEA (miss): lost a 0.20-confidence pick; wider tails lower overconfidence
- MIL@PHI (miss): lost a 0.20-confidence pick; wider tails lower overconfidence
- NYM@TEX (miss): lost a 0.20-confidence pick; wider tails lower overconfidence
- WAS@DET (miss): lost a 0.14-confidence pick; wider tails lower overconfidence
player.pitcher.v4 form weights / player.pitcher_prior_games
- Targets: starter_er_mae, starter_outs_mae
- Net: 5 helped vs 4 hurt
- Would help:
- CHW@KC (hit): starter ER off by 8
- CIN@ATL (miss): starter ER off by 5
- HOU@SEA (miss): starter ER off by 3
- MIA@CHC (miss): starter ER off by 5
- TB@NYY (hit): starter ER off by 3
- Would hurt / risk:
- ARI@COL (hit): starter projection was accurate (ER off 1); reweight risks disturbing it
- MIL@PHI (miss): starter projection was accurate (ER off 1); reweight risks disturbing it
- NYM@TEX (miss): starter projection was accurate (ER off 1); reweight risks disturbing it
- STL@PIT (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 1 hurt
- Would help:
- ARI@COL (hit): team runs off by 4
- CHW@KC (hit): team runs off by 16
- CIN@ATL (miss): team runs off by 11
- HOU@SEA (miss): team runs off by 9
- LAA@OAK (miss): team runs off by 7
- MIA@CHC (miss): team runs off by 8
- MIL@PHI (miss): team runs off by 5
- NYM@TEX (miss): team runs off by 5
- SD@LAD (hit): team runs off by 5
- STL@PIT (hit): team runs off by 7
- TB@NYY (hit): team runs off by 5
- TB@NYY (miss): team runs off by 6
- Would hurt / risk:
- CLE@BOS (miss): team runs already close (off 2); reweight risks disturbing it