Deep slate diagnosis — 20260924
- Games: 12 · hits 8 · misses 4 · winner accuracy 0.6667
- Mean total-run bias on losses: 1.5 (negative = under-projected)
- Mean team-run error on losses: 3.5 · mean Brier on losses: 0.29
Loss primary drivers
- Run environment far lower than projected (over-dispersed): 1
- Genuine toss-up that flipped: 1
- Backed the wrong side with real conviction: 2
High-level causal issue register
[HIGH] An intermediate stage materially degraded winner direction
- Domain:
pipeline_stages· affected: CHW@KC, MIA@CHC, NYM@TEX - Evidence: historical_ml → variance_applied changed winner accuracy by -0.2500 (-3 hits)
- Action: List the exact games whose winner flipped at this stage, and keep both the before-stage and after-stage picks in the trace.
- Do not infer: Even if a later stage recovers the pick, this unstable step is still a risk; do not treat it as harmless.
[HIGH] Published confidence buckets were poorly aligned on this slate
- Domain:
calibration· affected: ARI@COL, CHW@KC, CIN@ATL, CLE@BOS, HOU@OAK, LAA@SEA, MIA@CHC, MIL@PHI, NYM@TEX, SD@LAD, STL@PIT, TB@NYY - Evidence: weighted absolute calibration error 0.1701 across 12 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@OAK, LAA@SEA, MIA@CHC, MIL@PHI, NYM@TEX, SD@LAD, STL@PIT, TB@NYY - Evidence: home/away/total R² = 0.0040/0.0349/0.0031
- 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: ARI@COL, CHW@KC, CIN@ATL, CLE@BOS, HOU@OAK, LAA@SEA, MIA@CHC, MIL@PHI, NYM@TEX, SD@LAD, STL@PIT, TB@NYY - Evidence: 12/12 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: ARI@COL, CHW@KC, CIN@ATL, HOU@OAK, LAA@SEA - Evidence: 5 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: ARI@COL, CHW@KC, CIN@ATL, CLE@BOS, HOU@OAK, LAA@SEA, MIA@CHC, MIL@PHI, NYM@TEX, SD@LAD, STL@PIT, TB@NYY - 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: 20260914, 20260915, 20260916, 20260917, 20260918, 20260919, 20260920, 20260921, 20260922, 20260923, 20260924 (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: improving · series [0.7, 0.4, 0.6667, 0.4444, 0.6667, 0.7333, 0.6, 0.3333, 0.4, 0.5, 0.6667]weighted_calibration_error: improving · series [0.2812, 0.2795, 0.1661, 0.1016, 0.1247, 0.3458, 0.3184, 0.2028, 0.1881, 0.1108, 0.1701]margin_bias: improving · series [-0.4, -1.667, -1.133, -2.111, -2.0, -0.667, -1.533, -2.667, -1.867, -1.188, -1.083]mean_team_run_error_on_losses: improving · series [6.333, 5.556, 6.4, 3.6, 5.2, 6.5, 6.5, 3.0, 6.222, 5.75, 3.5]
Pipeline stage quality
historical_ml: winner 9/12 (0.75), team-run MAE 2.5701, margin MAE 2.2131variance_applied: winner 6/12 (0.5), team-run MAE 2.5, margin MAE 2.1667enhanced_prediction: winner 8/12 (0.6667), team-run MAE 2.1667, margin MAE 2.0embedded_savant_run_environment: winner 8/12 (0.6667), team-run MAE 2.2083, margin MAE 2.0833fundamental_edge_target_review: winner 8/12 (0.6667), team-run MAE 2.2083, margin MAE 2.0833capped_target: winner 8/12 (0.6667), team-run MAE 2.2083, margin MAE 2.0833simulation_result: winner 8/12 (0.6667), team-run MAE 2.2083, margin MAE 2.0833published_final: winner 8/12 (0.6667), team-run MAE 2.2083, margin MAE 2.0833
Probability lineage
- ARI@COL: raw 0.716 → calibrated 0.661 → published 0.56; score coherence followed by matchup-recency guardrail
- CHW@KC: raw 0.5873 → calibrated 0.62 → published 0.5446; score coherence followed by matchup-recency guardrail
- CIN@ATL: raw 0.6478 → calibrated 0.5973 → published 0.56; score coherence followed by matchup-recency guardrail
- CLE@BOS: raw 0.5 → calibrated 0.5073 → published 0.5062; published probability matches the calibrated/governed value
- HOU@OAK: raw 0.6661 → calibrated 0.6344 → published 0.56; score coherence followed by matchup-recency guardrail
- LAA@SEA: raw 0.6618 → calibrated 0.6366 → published 0.56; score coherence followed by matchup-recency guardrail
- MIA@CHC: raw 0.5425 → calibrated 0.5263 → published 0.519; score coherence followed by matchup-recency guardrail
- MIL@PHI: raw 0.5639 → calibrated 0.5543 → published 0.5392; score coherence followed by matchup-recency guardrail
- NYM@TEX: raw 0.5029 → calibrated 0.5246 → published 0.5209; published probability matches the calibrated/governed value
- SD@LAD: raw 0.5283 → calibrated 0.5186 → published 0.5098; score coherence followed by matchup-recency guardrail
- STL@PIT: raw 0.5644 → calibrated 0.5381 → published 0.5275; score coherence followed by matchup-recency guardrail
- TB@NYY: raw 0.5616 → calibrated 0.5366 → published 0.5311; score coherence followed by matchup-recency guardrail
Every game, in detail
ARI@COL — ✅ hit
- Predicted ARI 6-5 (conf -0.12, moderate) · actual ARI 12-8
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1936 · team-run err 9.0 · total bias -9
- Contributing factors:
- total runs under-projected by 9 (11 vs 20)
- ARI offense under-projected by 6
- COL offense under-projected by 3
- Tanner Gordon (COL) allowed 7 more ER than projected (10 vs 3)
CHW@KC — ✅ hit
- Predicted CHW 7-5 (conf -0.09, lean) · actual CHW 9-1
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.207371 · team-run err 6.0 · total bias +2
- Contributing factors:
- KC offense over-projected by 4
CIN@ATL — ❌ miss
- Predicted ATL 5-7 (conf +0.12, moderate) · actual CIN 7-6
- Root cause: Backed the wrong side with real conviction
- Errors: winner WRONG · Brier 0.3136 · team-run err 3.0 · total bias -1
- Contributing factors:
- committed to ATL at 0.12 confidence and it lost
CLE@BOS — ✅ hit
- Predicted CLE 4-2 (conf -0.01, toss_up) · actual CLE 1-0
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.243848 · team-run err 5.0 · total bias +5
- Contributing factors:
- total runs over-projected by 5 (6 vs 1)
- CLE offense over-projected by 3
HOU@OAK — ✅ hit
- Predicted HOU 7-5 (conf -0.12, moderate) · actual HOU 7-5
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.1936 · team-run err 0.0 · total bias +0
- Contributing factors:
- Peter Lambert (HOU) allowed 3 more ER than projected (4 vs 1)
LAA@SEA — ❌ miss
- Predicted SEA 4-5 (conf +0.12, moderate) · actual LAA 6-4
- Root cause: Backed the wrong side with real conviction
- Errors: winner WRONG · Brier 0.3136 · team-run err 3.0 · total bias -1
- Contributing factors:
- committed to SEA at 0.12 confidence and it lost
MIA@CHC — ✅ hit
- Predicted CHC 4-5 (conf +0.04, toss_up) · actual CHC 1-2
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.231327 · team-run err 6.0 · total bias +6
- Contributing factors:
- total runs over-projected by 6 (9 vs 3)
- MIA offense over-projected by 3
- CHC offense over-projected by 3
MIL@PHI — ✅ hit
- Predicted MIL 5-4 (conf -0.08, lean) · actual MIL 5-1
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.212327 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (9 vs 6)
- PHI offense over-projected by 3
- Andrew Painter (PHI) allowed 4 fewer ER than projected (1 vs 5)
NYM@TEX — ❌ miss
- Predicted NYM 5-4 (conf -0.04, lean) · actual TEX 1-3
- Root cause: Run environment far lower than projected (over-dispersed)
- Errors: winner WRONG · Brier 0.271314 · team-run err 5.0 · total bias +5
- Contributing factors:
- total runs over-projected by 5 (9 vs 4)
- NYM offense over-projected by 4
- Kumar Rocker (TEX) allowed 3 fewer ER than projected (1 vs 4)
SD@LAD — ❌ miss
- Predicted LAD 4-5 (conf +0.02, toss_up) · actual SD 4-2
- Root cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.259892 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (9 vs 6)
- LAD offense over-projected by 3
STL@PIT — ✅ hit
- Predicted PIT 4-5 (conf +0.06, lean) · actual PIT 1-2
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.223209 · team-run err 6.0 · total bias +6
- Contributing factors:
- total runs over-projected by 6 (9 vs 3)
- STL offense over-projected by 3
- PIT offense over-projected by 3
- Paul Skenes (PIT) allowed 3 fewer ER than projected (1 vs 4)
TB@NYY — ✅ hit
- Predicted NYY 2-4 (conf +0.06, lean) · actual NYY 4-6
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.219833 · team-run err 4.0 · total bias -4
- Contributing factors:
- total runs under-projected by 4 (6 vs 10)
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 0 hurt
- Would help:
- CIN@ATL (miss): lost a 0.12-confidence pick; wider tails lower overconfidence
- LAA@SEA (miss): lost a 0.12-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 3 hurt
- Would help:
- ARI@COL (hit): starter ER off by 7
- HOU@OAK (hit): starter ER off by 3
- MIL@PHI (hit): starter ER off by 4
- NYM@TEX (miss): starter ER off by 3
- STL@PIT (hit): starter ER off by 3
- Would hurt / risk:
- CIN@ATL (miss): starter projection was accurate (ER off 1); reweight risks disturbing it
- LAA@SEA (miss): starter projection was accurate (ER off 1); reweight risks disturbing it
- TB@NYY (hit): starter projection was accurate (ER off 0); reweight risks disturbing it
recent. / season. run-mean weighting
- Targets: team_run_mae, total_run_mae, accuracy
- Net: 7 helped vs 1 hurt
- Would help:
- ARI@COL (hit): team runs off by 9
- CHW@KC (hit): team runs off by 6
- CLE@BOS (hit): team runs off by 5
- MIA@CHC (hit): team runs off by 6
- NYM@TEX (miss): team runs off by 5
- STL@PIT (hit): team runs off by 6
- TB@NYY (hit): team runs off by 4
- Would hurt / risk:
- HOU@OAK (hit): team runs already close (off 0); reweight risks disturbing it