Deep slate diagnosis — 20260926
- Games: 13 · hits 7 · misses 6 · winner accuracy 0.5385
- Mean total-run bias on losses: 0.167 (negative = under-projected)
- Mean team-run error on losses: 6.167 · mean Brier on losses: 0.323
Loss primary drivers
- Run environment far higher than projected (under-dispersed): 1
- Starting-pitcher projection was wrong: 4
- Backed the wrong side with real conviction: 1
High-level causal issue register
[CRITICAL] Published probability differs materially without a recorded transformation
- Domain:
probability_lineage· affected: COL@CHW - 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] An intermediate stage materially degraded winner direction
- Domain:
pipeline_stages· affected: CLE@KC, HOU@OAK, NYM@WAS - Evidence: historical_ml → variance_applied changed winner accuracy by -0.2308 (-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 margins are compressed relative to realized margins
- Domain:
score_distribution· affected: ATL@MIA, CLE@KC, HOU@OAK, LAA@SEA, NYM@WAS, TB@PHI, TEX@MIN - Evidence: 12/13 predictions were ≤2 runs; 8/13 actual margins were ≥4; mean predicted margin 1.62 vs actual 4.62
- Action: Check whether predicted margins are too narrow across several recent out-of-sample slates (measuring tail coverage and margin MAE) before widening the score spread.
- Do not infer: A single blowout game is not a reason to widen every score prediction.
[HIGH] Published confidence buckets were poorly aligned on this slate
- Domain:
calibration· affected: ARI@SD, ATL@MIA, CIN@TOR, CLE@KC, COL@CHW, HOU@OAK, LAA@SEA, LAD@SF, NYM@WAS, PIT@DET, STL@MIL, TB@PHI, TEX@MIN - Evidence: weighted absolute calibration error 0.1524 across 13 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@SD, ATL@MIA, CIN@TOR, CLE@KC, COL@CHW, HOU@OAK, LAA@SEA, LAD@SF, NYM@WAS, PIT@DET, STL@MIL, TB@PHI, TEX@MIN - Evidence: home/away/total R² = 0.0141/0.0320/0.0038
- 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@SD, ATL@MIA, CIN@TOR, CLE@KC, COL@CHW, HOU@OAK, LAA@SEA, LAD@SF, NYM@WAS, PIT@DET, STL@MIL, TB@PHI, TEX@MIN - Evidence: 14/13 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@SD, ATL@MIA, CIN@TOR, CLE@KC, COL@CHW, HOU@OAK, LAA@SEA, LAD@SF, NYM@WAS, PIT@DET, STL@MIL, TB@PHI, TEX@MIN - 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: 20260916, 20260917, 20260918, 20260919, 20260920, 20260921, 20260922, 20260923, 20260924, 20260925, 20260926 (10 prior slates loaded)
- Highest-confidence pick loss streak: 1 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: flat · series [0.6667, 0.4444, 0.6667, 0.7333, 0.6, 0.3333, 0.4, 0.5, 0.6667, 0.6471, 0.5385]weighted_calibration_error: improving · series [0.1661, 0.1016, 0.1247, 0.3458, 0.3184, 0.2028, 0.1881, 0.1108, 0.1701, 0.1302, 0.1524]margin_bias: regressing · series [-1.133, -2.111, -2.0, -0.667, -1.533, -2.667, -1.867, -1.188, -1.083, -1.706, -3.0]mean_team_run_error_on_losses: regressing · series [6.4, 3.6, 5.2, 6.5, 6.5, 3.0, 6.222, 5.75, 3.5, 5.333, 6.167]
Pipeline stage quality
historical_ml: winner 9/13 (0.6923), team-run MAE 2.7122, margin MAE 4.6277variance_applied: winner 6/13 (0.4615), team-run MAE 2.7308, margin MAE 4.6923enhanced_prediction: winner 7/13 (0.5385), team-run MAE 2.6923, margin MAE 4.7692embedded_savant_run_environment: winner 7/13 (0.5385), team-run MAE 2.7692, margin MAE 4.9231fundamental_edge_target_review: winner 7/13 (0.5385), team-run MAE 2.8077, margin MAE 5.0capped_target: winner 7/13 (0.5385), team-run MAE 2.8077, margin MAE 5.0simulation_result: winner 7/13 (0.5385), team-run MAE 2.8077, margin MAE 5.0published_final: winner 7/13 (0.5385), team-run MAE 2.8077, margin MAE 5.0
Probability lineage
- ARI@SD: raw 0.5822 → calibrated 0.5474 → published 0.5342; score coherence followed by matchup-recency guardrail
- ATL@MIA: raw 0.6259 → calibrated 0.5703 → published 0.53; score coherence followed by matchup-recency guardrail
- CIN@TOR: raw 0.6356 → calibrated 0.6195 → published 0.6195; published probability matches the calibrated/governed value
- CLE@KC: raw 0.5778 → calibrated 0.6014 → published 0.56; score coherence followed by matchup-recency guardrail
- COL@CHW: raw 0.7429 → calibrated 0.7218 → published 0.6978; no recorded transformation explains the publication delta
- HOU@OAK: raw 0.5595 → calibrated 0.5355 → published 0.5229; score coherence followed by matchup-recency guardrail
- LAA@SEA: raw 0.5622 → calibrated 0.537 → published 0.518; score coherence followed by matchup-recency guardrail
- LAD@SF: raw 0.6376 → calibrated 0.5985 → published 0.5535; score coherence followed by matchup-recency guardrail
- NYM@WAS: raw 0.5 → calibrated 0.5132 → published 0.5064; score coherence followed by matchup-recency guardrail
- PIT@DET: raw 0.5657 → calibrated 0.5388 → published 0.5133; score coherence followed by matchup-recency guardrail
- STL@MIL: raw 0.5672 → calibrated 0.5626 → published 0.5354; score coherence followed by matchup-recency guardrail
- TB@PHI: raw 0.5834 → calibrated 0.6076 → published 0.6076; published probability matches the calibrated/governed value
- TEX@MIN: raw 0.5 → calibrated 0.5117 → published 0.51; published probability matches the calibrated/governed value
Every game, in detail
ARI@SD — ❌ miss
- Predicted ARI 5-4 (conf -0.07, lean) · actual SD 7-10
- Root cause: Run environment far higher than projected (under-dispersed)
- Errors: winner WRONG · Brier 0.285418 · team-run err 8.0 · total bias -8
- Contributing factors:
- total runs under-projected by 8 (9 vs 17)
- SD offense under-projected by 6
ATL@MIA — ✅ hit
- Predicted ATL 5-4 (conf -0.06, lean) · actual ATL 8-3
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.2209 · team-run err 4.0 · total bias -2
- Contributing factors:
- ATL offense under-projected by 3
- Brent Suter (ATL) allowed 4 fewer ER than projected (0 vs 4)
CIN@TOR — ❌ miss
- Predicted TOR 3-5 (conf +0.24, strong) · actual CIN 5-1
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Backed the wrong side with real conviction
- Errors: winner WRONG · Brier 0.383809 · team-run err 6.0 · total bias +2
- Contributing factors:
- TOR offense over-projected by 4
- Rhett Lowder (CIN) allowed 4 fewer ER than projected (0 vs 4)
- committed to TOR at 0.24 confidence and it lost
CLE@KC — ✅ hit
- Predicted CLE 6-5 (conf -0.12, moderate) · actual CLE 11-5
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.1936 · team-run err 5.0 · total bias -5
- Contributing factors:
- total runs under-projected by 5 (11 vs 16)
- CLE offense under-projected by 5
- Tanner Bibee (CLE) allowed 3 more ER than projected (3 vs 0)
COL@CHW — ❌ miss
- Predicted CHW 4-9 (conf +0.40, strong) · actual COL 9-6
- Root cause: Backed the wrong side with real conviction
- Secondary cause: Small edge on the losing side
- Errors: winner WRONG · Brier 0.486882 · team-run err 8.0 · total bias -2
- Contributing factors:
- COL offense under-projected by 5
- CHW offense over-projected by 3
- committed to CHW at 0.40 confidence and it lost
HOU@OAK — ✅ hit
- Predicted HOU 6-5 (conf -0.05, lean) · actual HOU 13-2
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.227629 · team-run err 10.0 · total bias -4
- Contributing factors:
- total runs under-projected by 4 (11 vs 15)
- HOU offense under-projected by 7
- OAK offense over-projected by 3
- Jack Perkins (OAK) allowed 3 more ER than projected (6 vs 3)
LAA@SEA — ✅ hit
- Predicted SEA 4-5 (conf +0.04, toss_up) · actual SEA 4-8
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.232304 · team-run err 3.0 · total bias -3
- Contributing factors:
- total runs under-projected by 3 (9 vs 12)
- SEA offense under-projected by 3
- Ryan Johnson (LAA) allowed 3 more ER than projected (4 vs 1)
LAD@SF — ✅ hit
- Predicted LAD 4-2 (conf -0.11, moderate) · actual LAD 4-3
- Root cause: strong_correct_call
- Errors: winner correct · Brier 0.199385 · team-run err 1.0 · total bias -1
NYM@WAS — ❌ miss
- Predicted WAS 6-7 (conf +0.01, toss_up) · actual NYM 7-1
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Run environment far lower than projected (over-dispersed)
- Errors: winner WRONG · Brier 0.256482 · team-run err 7.0 · total bias +5
- Contributing factors:
- total runs over-projected by 5 (13 vs 8)
- WAS offense over-projected by 6
- Connelly Early (WAS) allowed 5 fewer ER than projected (0 vs 5)
PIT@DET — ❌ miss
- Predicted PIT 6-4 (conf -0.03, toss_up) · actual DET 3-4
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.263515 · team-run err 3.0 · total bias +3
- Contributing factors:
- total runs over-projected by 3 (10 vs 7)
- PIT offense over-projected by 3
- Justin Verlander (DET) allowed 4 fewer ER than projected (2 vs 6)
STL@MIL — ✅ hit
- Predicted MIL 4-5 (conf +0.07, lean) · actual MIL 2-3
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.215812 · team-run err 4.0 · total bias +4
- Contributing factors:
- total runs over-projected by 4 (9 vs 5)
TB@PHI — ✅ hit
- Predicted TB 4-2 (conf -0.22, strong) · actual TB 12-1
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.154005 · team-run err 9.0 · total bias -7
- Contributing factors:
- total runs under-projected by 7 (6 vs 13)
- TB offense under-projected by 8
TEX@MIN — ❌ miss
- Predicted MIN 4-5 (conf +0.02, toss_up) · actual TEX 6-2
- Root cause: Starting-pitcher projection was wrong
- Secondary cause: Genuine toss-up that flipped
- Errors: winner WRONG · Brier 0.260082 · team-run err 5.0 · total bias +1
- Contributing factors:
- MIN offense over-projected by 3
- Nathan Eovaldi (TEX) allowed 3 fewer ER than projected (1 vs 4)
- Bailey Ober (MIN) allowed 5 more ER than projected (6 vs 1)
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:
- CIN@TOR (miss): lost a 0.24-confidence pick; wider tails lower overconfidence
- COL@CHW (miss): lost a 0.40-confidence pick; wider tails lower overconfidence
- Would hurt / risk:
- TB@PHI (hit): strong correct call at 0.22; widening softens a good edge
player.pitcher.v4 form weights / player.pitcher_prior_games
- Targets: starter_er_mae, starter_outs_mae
- Net: 8 helped vs 2 hurt
- Would help:
- ATL@MIA (hit): starter ER off by 4
- CIN@TOR (miss): starter ER off by 4
- CLE@KC (hit): starter ER off by 3
- HOU@OAK (hit): starter ER off by 3
- LAA@SEA (hit): starter ER off by 3
- NYM@WAS (miss): starter ER off by 5
- PIT@DET (miss): starter ER off by 4
- TEX@MIN (miss): starter ER off by 5
- Would hurt / risk:
- LAD@SF (hit): starter projection was accurate (ER off 1); reweight risks disturbing it
- TB@PHI (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: 10 helped vs 1 hurt
- Would help:
- ARI@SD (miss): team runs off by 8
- ATL@MIA (hit): team runs off by 4
- CIN@TOR (miss): team runs off by 6
- CLE@KC (hit): team runs off by 5
- COL@CHW (miss): team runs off by 8
- HOU@OAK (hit): team runs off by 10
- NYM@WAS (miss): team runs off by 7
- STL@MIL (hit): team runs off by 4
- TB@PHI (hit): team runs off by 9
- TEX@MIN (miss): team runs off by 5
- Would hurt / risk:
- LAD@SF (hit): team runs already close (off 1); reweight risks disturbing it