Deep slate diagnosis — 20260929
- Games: 4 · hits 4 · misses 0 · winner accuracy 1.0
- Mean total-run bias on losses: None (negative = under-projected)
- Mean team-run error on losses: None · mean Brier on losses: None
Loss primary drivers
High-level causal issue register
[HIGH] An intermediate stage materially degraded winner direction
- Domain:
pipeline_stages· affected: CHC@SD, PHI@ATL - Evidence: historical_ml → variance_applied changed winner accuracy by -0.5000 (-2 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: BOS@NYY, CHC@SD - Evidence: 4/4 predictions were ≤2 runs; 2/4 actual margins were ≥4; mean predicted margin 1.25 vs actual 5.50
- 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: BOS@NYY, CHC@SD, CHW@HOU, PHI@ATL - Evidence: weighted absolute calibration error 0.4792 across 4 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: BOS@NYY, CHC@SD, CHW@HOU, PHI@ATL - Evidence: home/away/total R² = 0.0021/0.0309/0.0024
- 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: BOS@NYY, CHC@SD, CHW@HOU, PHI@ATL - Evidence: 4/4 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: CHW@HOU - Evidence: 1 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: BOS@NYY, CHC@SD, CHW@HOU, PHI@ATL - 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: 20260919, 20260920, 20260921, 20260922, 20260923, 20260924, 20260925, 20260926, 20260927, , 20260929 (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.
Metric direction across the window
winner_accuracy: improving · series [0.7333, 0.6, 0.3333, 0.4, 0.5, 0.6667, 0.6471, 0.5385, 0.6429, None, 1.0]weighted_calibration_error: regressing · series [0.3458, 0.3184, 0.2028, 0.1881, 0.1108, 0.1701, 0.1302, 0.1524, 0.1031, None, 0.4792]margin_bias: regressing · series [-0.667, -1.533, -2.667, -1.867, -1.188, -1.083, -1.706, -3.0, -1.571, None, -4.25]mean_team_run_error_on_losses: improving · series [6.5, 6.5, 3.0, 6.222, 5.75, 3.5, 5.333, 6.167, 4.8, None, None]
Pipeline stage quality
historical_ml: winner 4/4 (1.0), team-run MAE 2.281, margin MAE 4.562variance_applied: winner 2/4 (0.5), team-run MAE 2.375, margin MAE 4.75enhanced_prediction: winner 4/4 (1.0), team-run MAE 2.5, margin MAE 4.5embedded_savant_run_environment: winner 4/4 (1.0), team-run MAE 2.375, margin MAE 4.25fundamental_edge_target_review: winner 4/4 (1.0), team-run MAE 2.375, margin MAE 4.25capped_target: winner 4/4 (1.0), team-run MAE 2.375, margin MAE 4.25simulation_result: winner 4/4 (1.0), team-run MAE 2.375, margin MAE 4.25published_final: winner 4/4 (1.0), team-run MAE 2.375, margin MAE 4.25
Probability lineage
- BOS@NYY: raw 0.5973 → calibrated 0.5554 → published 0.54; score coherence followed by matchup-recency guardrail
- CHC@SD: raw 0.5143 → calibrated 0.5109 → published 0.5079; published probability matches the calibrated/governed value
- CHW@HOU: raw 0.5898 → calibrated 0.5513 → published 0.53; score coherence followed by matchup-recency guardrail
- PHI@ATL: raw 0.5079 → calibrated 0.5075 → published 0.5054; published probability matches the calibrated/governed value
Every game, in detail
BOS@NYY — ✅ hit
- Predicted NYY 2-4 (conf +0.08, lean) · actual NYY 0-9
- Root cause: right_winner_wrong_score
- Errors: winner correct · Brier 0.2116 · team-run err 7.0 · total bias -3
- Contributing factors:
- total runs under-projected by 3 (6 vs 9)
- NYY offense under-projected by 5
CHC@SD — ✅ hit
- Predicted SD 4-5 (conf +0.02, toss_up) · actual SD 0-8
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.242166 · team-run err 7.0 · total bias +1
- Contributing factors:
- CHC offense over-projected by 4
- SD offense under-projected by 3
- Michael King (SD) allowed 3 fewer ER than projected (0 vs 3)
CHW@HOU — ✅ hit
- Predicted CHW 6-5 (conf -0.06, lean) · actual CHW 6-3
- Root cause: solid_correct_call
- Errors: winner correct · Brier 0.2209 · team-run err 2.0 · total bias +2
PHI@ATL — ✅ hit
- Predicted ATL 2-3 (conf +0.01, toss_up) · actual ATL 3-5
- Root cause: toss_up_went_our_way
- Errors: winner correct · Brier 0.244635 · team-run err 3.0 · total bias -3
- Contributing factors:
- total runs under-projected by 3 (5 vs 8)
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: 0 helped vs 0 hurt
player.pitcher.v4 form weights / player.pitcher_prior_games
- Targets: starter_er_mae, starter_outs_mae
- Net: 1 helped vs 2 hurt
- Would help:
- CHC@SD (hit): starter ER off by 3
- Would hurt / risk:
- BOS@NYY (hit): starter projection was accurate (ER off 1); reweight risks disturbing it
- CHW@HOU (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: 2 helped vs 1 hurt
- Would help:
- BOS@NYY (hit): team runs off by 7
- CHC@SD (hit): team runs off by 7
- Would hurt / risk:
- CHW@HOU (hit): team runs already close (off 2); reweight risks disturbing it