| 20260920 | 20260920_ATL@HOU | away | Martín Pérez | Martín Pérez | True | 5.2 | 4.1 | -4 | 2 | 1 | -1 | 4/6 | 2/2 | 5/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.0726392251815984,
"WHIP": 1.2566585956416465,
"IP": 137.2,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.133,
"recent_avg_IP": 5.267,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2438,
"sample_weight": 1.0,
"run_prevention_factor": 1.0207,
"strikeout_factor": 0.9514,
"walk_factor": 1.026,
"homer_factor": 0.9633,
"regression_flag": "negative_pitcher_regression",
"k_percent": 17.4,
"bb_percent": 10.4,
"woba": 0.295,
"xwoba": 0.328,
"barrel_percent": 4.9,
"hard_hit_percent": 36.2,
"whiff_percent": 21.1
},
"espn_rank": {
"rank": null,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 137.2,
"season_ERA": 3.073,
"season_WHIP": 1.257,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "527048",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.1,
"ER": 8.0,
"R": 12.0,
"H": 25.0,
"BB": 15.0,
"SO": 17.0,
"HR": 2.0,
"BF": 120.0,
"Pitches": 444.0
},
"per_game": {
"IP": 5.1,
"ER": 1.6,
"R": 2.4,
"H": 5.0,
"BB": 3.0,
"SO": 3.4,
"HR": 0.4,
"BF": 24.0,
"Pitches": 88.8
},
"rates": {
"ERA": 2.7342,
"WHIP": 1.519,
"ER_per_IP": 0.3038,
"H_per_IP": 0.94937,
"BB_per_IP": 0.56962,
"SO_per_IP": 0.64557,
"HR_per_IP": 0.07595
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.1,
"ER": 15.0,
"R": 19.0,
"H": 47.0,
"BB": 24.0,
"SO": 35.0,
"HR": 3.0,
"BF": 226.0,
"Pitches": 808.0
},
"per_game": {
"IP": 5.1,
"ER": 1.5,
"R": 1.9,
"H": 4.7,
"BB": 2.4,
"SO": 3.5,
"HR": 0.3,
"BF": 22.6,
"Pitches": 80.8
},
"rates": {
"ERA": 2.5796,
"WHIP": 1.3567,
"ER_per_IP": 0.28662,
"H_per_IP": 0.89809,
"BB_per_IP": 0.4586,
"SO_per_IP": 0.66879,
"HR_per_IP": 0.05732
}
},
"season": {
"games": 29,
"totals": {
"IP": 137.2,
"ER": 47.0,
"R": 52.0,
"H": 113.0,
"BB": 60.0,
"SO": 100.0,
"HR": 13.0,
"BF": 575.0,
"Pitches": 2165.0
},
"per_game": {
"IP": 4.2,
"ER": 1.6207,
"R": 1.7931,
"H": 3.8966,
"BB": 2.069,
"SO": 3.4483,
"HR": 0.4483,
"BF": 19.8276,
"Pitches": 74.6552
},
"rates": {
"ERA": 3.0726,
"WHIP": 1.2567,
"ER_per_IP": 0.3414,
"H_per_IP": 0.82082,
"BB_per_IP": 0.43584,
"SO_per_IP": 0.72639,
"HR_per_IP": 0.09443
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 1.767,
"predicted_H": 4.831,
"predicted_BB": 2.556,
"predicted_SO": 3.735,
"predicted_HR": 0.444,
"predicted_ERA": 3.0192,
"predicted_WHIP": 1.4021
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4121,
"form_weight": 0.5879,
"form_reliability": 0.8529,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.767,
"final": 1.863,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.831,
"final": 4.4885,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.556,
"final": 2.3268,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.735,
"final": 4.2564,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.444,
"final": 0.261,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.0192,
"final": 3.0192,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4021,
"final": 1.4021,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 52.1,
"ER": 15,
"H": 47,
"BB": 24,
"SO": 35,
"HR": 3,
"ERA": 2.5796178343949046,
"WHIP": 1.356687898089172,
"K9": 6.019108280254777,
"HR9": 0.5159235668789809,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.7869329358325468,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 2.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "527048",
"player_name": "Mart\u00edn P\u00e9rez",
"position": "Starter",
"team": "ATL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ATL",
"games": 155,
"wins": 91,
"losses": 64,
"win_pct": 0.5871,
"runs_scored": 718.0,
"runs_allowed": 600.0,
"run_differential": 118.0,
"run_differential_per_game": 0.7613,
"avg_runs_scored": 4.6323,
"avg_runs_allowed": 3.871,
"offense_index": 1.0315,
"defense_index": 1.1602,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 4.7,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.2023
},
"opponent": {
"team": "HOU",
"games": 155,
"wins": 77,
"losses": 78,
"win_pct": 0.4968,
"runs_scored": 686.0,
"runs_allowed": 743.0,
"run_differential": -57.0,
"run_differential_per_game": -0.3677,
"avg_runs_scored": 4.4258,
"avg_runs_allowed": 4.7935,
"offense_index": 0.9855,
"defense_index": 0.9369,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 5.3,
"run_differential": -20.0
},
"available": true,
"quality_score": -0.1178
},
"edges": {
"quality_edge": 0.3201,
"offense_edge": 0.0315,
"opponent_offense_edge": -0.0145,
"defense_strength": 0.1602,
"opponent_defense_weakness": 0.0631,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0182,
"run_prevention": 0.9657,
"strikeout": 1.0108
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "527048",
"profile": {
"available": true,
"pitcher_id": "527048",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 544.0,
"k_percent": 17.4,
"bb_percent": 10.4,
"woba": 0.295,
"xwoba": 0.328,
"sweet_spot_percent": 34.7,
"barrel_batted_rate": 4.9,
"hard_hit_percent": 36.2,
"avg_best_speed": 76.4358,
"avg_hyper_speed": 93.8721,
"whiff_percent": 21.1,
"swing_percent": 43.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0285,
"command_and_miss": -0.5557,
"regression_edge": -0.9429,
"xwoba_edge": -0.4643,
"barrel_edge": 0.5111,
"hard_hit_edge": 0.2429,
"whiff_edge": -0.5571,
"bb_edge": -0.325,
"pitch_design_score": -0.2626
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "527048",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 87,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 85.16206194646246,
"release_spin_rate": 1970.1956390461808,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 85.16206194646246,
"release_spin_rate": 1970.1956390461808,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 85.1621,
"release_spin_rate": 1970.1956,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.2626,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.8756,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.2438,
"sample_weight": 1.0,
"run_prevention_factor": 1.0207,
"strikeout_factor": 0.9514,
"walk_factor": 1.026,
"homer_factor": 0.9633,
"woba_minus_xwoba": -0.033,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "527048",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0207,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0207,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 1.026,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9633,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9514,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 94,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260920_ATL@HOU.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_ATL@HOU | home | Hunter Brown | Hunter Brown | True | 5.2 | 5.0 | -2 | 4 | 0 | -4 | 6/3 | 1/2 | 5/10 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.4329896907216493,
"WHIP": 1.288659793814433,
"IP": 97.0,
"games_started": null,
"games_pitched": 18,
"role_avg_IP": 5.389,
"recent_avg_IP": 5.667,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4588,
"sample_weight": 1.0,
"run_prevention_factor": 0.961,
"strikeout_factor": 1.0383,
"walk_factor": 1.06,
"homer_factor": 0.9516,
"regression_flag": "neutral",
"k_percent": 27.1,
"bb_percent": 12.1,
"woba": 0.299,
"xwoba": 0.282,
"barrel_percent": 6.2,
"hard_hit_percent": 37.0,
"whiff_percent": 26.6
},
"espn_rank": {
"rank": 87,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "686613",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 18,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.1,
"ER": 9.0,
"R": 10.0,
"H": 27.0,
"BB": 9.0,
"SO": 38.0,
"HR": 2.0,
"BF": 115.0,
"Pitches": 485.0
},
"per_game": {
"IP": 5.2,
"ER": 1.8,
"R": 2.0,
"H": 5.4,
"BB": 1.8,
"SO": 7.6,
"HR": 0.4,
"BF": 23.0,
"Pitches": 97.0
},
"rates": {
"ERA": 2.8588,
"WHIP": 1.2706,
"ER_per_IP": 0.31765,
"H_per_IP": 0.95294,
"BB_per_IP": 0.31765,
"SO_per_IP": 1.34118,
"HR_per_IP": 0.07059
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 57.0,
"ER": 19.0,
"R": 20.0,
"H": 46.0,
"BB": 21.0,
"SO": 67.0,
"HR": 6.0,
"BF": 229.0,
"Pitches": 951.0
},
"per_game": {
"IP": 5.2,
"ER": 1.9,
"R": 2.0,
"H": 4.6,
"BB": 2.1,
"SO": 6.7,
"HR": 0.6,
"BF": 22.9,
"Pitches": 95.1
},
"rates": {
"ERA": 3.0,
"WHIP": 1.1754,
"ER_per_IP": 0.33333,
"H_per_IP": 0.80702,
"BB_per_IP": 0.36842,
"SO_per_IP": 1.17544,
"HR_per_IP": 0.10526
}
},
"season": {
"games": 18,
"totals": {
"IP": 97.0,
"ER": 37.0,
"R": 40.0,
"H": 76.0,
"BB": 49.0,
"SO": 110.0,
"HR": 11.0,
"BF": 406.0,
"Pitches": 1683.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0556,
"R": 2.2222,
"H": 4.2222,
"BB": 2.7222,
"SO": 6.1111,
"HR": 0.6111,
"BF": 22.5556,
"Pitches": 93.5
},
"rates": {
"ERA": 3.433,
"WHIP": 1.2887,
"ER_per_IP": 0.38144,
"H_per_IP": 0.78351,
"BB_per_IP": 0.50515,
"SO_per_IP": 1.13402,
"HR_per_IP": 0.1134
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.099,
"predicted_H": 5.012,
"predicted_BB": 2.097,
"predicted_SO": 6.597,
"predicted_HR": 0.584,
"predicted_ERA": 3.3644,
"predicted_WHIP": 1.2663
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4419,
"form_weight": 0.5581,
"form_reliability": 0.7826,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.099,
"final": 2.939,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.012,
"final": 5.4485,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.097,
"final": 1.6123,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 6.597,
"final": 5.4495,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.584,
"final": 0.326,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.3644,
"final": 3.3644,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2663,
"final": 1.2663,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 57.0,
"ER": 19,
"H": 46,
"BB": 21,
"SO": 67,
"HR": 6,
"ERA": 3.0,
"WHIP": 1.1754385964912282,
"K9": 10.578947368421053,
"HR9": 0.9473684210526315,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.8296946969231714,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "686613",
"player_name": "Hunter Brown",
"position": "Starter",
"team": "HOU",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 4.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "HOU",
"games": 155,
"wins": 77,
"losses": 78,
"win_pct": 0.4968,
"runs_scored": 686.0,
"runs_allowed": 743.0,
"run_differential": -57.0,
"run_differential_per_game": -0.3677,
"avg_runs_scored": 4.4258,
"avg_runs_allowed": 4.7935,
"offense_index": 0.9855,
"defense_index": 0.9369,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 5.3,
"run_differential": -20.0
},
"available": true,
"quality_score": -0.1178
},
"opponent": {
"team": "ATL",
"games": 155,
"wins": 91,
"losses": 64,
"win_pct": 0.5871,
"runs_scored": 718.0,
"runs_allowed": 600.0,
"run_differential": 118.0,
"run_differential_per_game": 0.7613,
"avg_runs_scored": 4.6323,
"avg_runs_allowed": 3.871,
"offense_index": 1.0315,
"defense_index": 1.1602,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 4.7,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.2023
},
"edges": {
"quality_edge": -0.3201,
"offense_edge": -0.0145,
"opponent_offense_edge": 0.0315,
"defense_strength": -0.0631,
"opponent_defense_weakness": -0.1602,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.984,
"run_prevention": 1.0274,
"strikeout": 0.9879
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "686613",
"profile": {
"available": true,
"pitcher_id": "686613",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 386.0,
"k_percent": 27.1,
"bb_percent": 12.1,
"woba": 0.299,
"xwoba": 0.282,
"sweet_spot_percent": 28.0,
"barrel_batted_rate": 6.2,
"hard_hit_percent": 37.0,
"avg_best_speed": 74.5049,
"avg_hyper_speed": 93.2689,
"whiff_percent": 26.6,
"swing_percent": 41.9
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.593,
"command_and_miss": 0.2579,
"regression_edge": 0.4857,
"xwoba_edge": 0.85,
"barrel_edge": 0.2222,
"hard_hit_edge": 0.1286,
"whiff_edge": 0.2286,
"bb_edge": -0.75,
"pitch_design_score": 0.1392
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "686613",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 96,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 96,
"pitch_usage": 0.0,
"release_speed": 92.33714491013515,
"release_spin_rate": 2193.36097163242,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 96,
"pitch_usage": 0.0,
"release_speed": 92.33714491013515,
"release_spin_rate": 2193.36097163242,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 92.3371,
"release_spin_rate": 2193.361,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1392,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.9945,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.4588,
"sample_weight": 1.0,
"run_prevention_factor": 0.961,
"strikeout_factor": 1.0383,
"walk_factor": 1.06,
"homer_factor": 0.9516,
"woba_minus_xwoba": 0.017,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "686613",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.961,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.961,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.06,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9516,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0383,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 6,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 105,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 4",
"detail": "Actual minus predicted earned runs was -4; this is the primary run-prevention error."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 4 ER."
}
],
"provenance": {
"prediction": "output/games/20260920_ATL@HOU.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_BOS@TB | away | Patrick Sandoval | Patrick Sandoval | True | 4.2 | 7.0 | 7 | 4 | 5 | 1 | 5/4 | 1/2 | 8/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.994219653179191,
"WHIP": 1.7861271676300579,
"IP": 57.2,
"games_started": null,
"games_pitched": 12,
"role_avg_IP": 4.806,
"recent_avg_IP": 4.733,
"last_start_IP": 2.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3039,
"sample_weight": 1.0,
"run_prevention_factor": 1.0258,
"strikeout_factor": 1.0097,
"walk_factor": 1.036,
"homer_factor": 1.0166,
"regression_flag": "neutral",
"k_percent": 23.2,
"bb_percent": 10.9,
"woba": 0.372,
"xwoba": 0.35,
"barrel_percent": 6.9,
"hard_hit_percent": 36.0,
"whiff_percent": 25.5
},
"espn_rank": {
"rank": 757,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7059,
"prior_weight": 0.2941
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663776",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 12,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.2,
"ER": 14.0,
"R": 15.0,
"H": 27.0,
"BB": 13.0,
"SO": 27.0,
"HR": 3.0,
"BF": 107.0,
"Pitches": 436.0
},
"per_game": {
"IP": 4.2,
"ER": 2.8,
"R": 3.0,
"H": 5.4,
"BB": 2.6,
"SO": 5.4,
"HR": 0.6,
"BF": 21.4,
"Pitches": 87.2
},
"rates": {
"ERA": 5.3239,
"WHIP": 1.6901,
"ER_per_IP": 0.59155,
"H_per_IP": 1.14085,
"BB_per_IP": 0.5493,
"SO_per_IP": 1.14085,
"HR_per_IP": 0.12676
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.1,
"ER": 27.0,
"R": 30.0,
"H": 60.0,
"BB": 27.0,
"SO": 52.0,
"HR": 5.0,
"BF": 225.0,
"Pitches": 874.0
},
"per_game": {
"IP": 4.2,
"ER": 2.7,
"R": 3.0,
"H": 6.0,
"BB": 2.7,
"SO": 5.2,
"HR": 0.5,
"BF": 22.5,
"Pitches": 87.4
},
"rates": {
"ERA": 5.0276,
"WHIP": 1.8,
"ER_per_IP": 0.55862,
"H_per_IP": 1.24138,
"BB_per_IP": 0.55862,
"SO_per_IP": 1.07586,
"HR_per_IP": 0.10345
}
},
"season": {
"games": 12,
"totals": {
"IP": 57.2,
"ER": 32.0,
"R": 36.0,
"H": 74.0,
"BB": 29.0,
"SO": 62.0,
"HR": 6.0,
"BF": 267.0,
"Pitches": 1015.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6667,
"R": 3.0,
"H": 6.1667,
"BB": 2.4167,
"SO": 5.1667,
"HR": 0.5,
"BF": 22.25,
"Pitches": 84.5833
},
"rates": {
"ERA": 4.9942,
"WHIP": 1.7861,
"ER_per_IP": 0.55491,
"H_per_IP": 1.28324,
"BB_per_IP": 0.50289,
"SO_per_IP": 1.07514,
"HR_per_IP": 0.10405
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.587,
"predicted_H": 5.316,
"predicted_BB": 2.305,
"predicted_SO": 4.923,
"predicted_HR": 0.581,
"predicted_ERA": 4.9893,
"predicted_WHIP": 1.633
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4743,
"form_weight": 0.5257,
"form_reliability": 0.7059,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7059,
"prior_weight": 0.2941
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.587,
"final": 3.2571,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.316,
"final": 5.1661,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.305,
"final": 1.6861,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.923,
"final": 5.4338,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.581,
"final": 0.7797,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.9893,
"final": 4.9893,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.633,
"final": 1.633,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 48.1,
"ER": 27,
"H": 60,
"BB": 27,
"SO": 52,
"HR": 5,
"ERA": 5.027586206896552,
"WHIP": 1.7999999999999998,
"K9": 9.682758620689654,
"HR9": 0.9310344827586207,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 1.073412180286753,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_BB": 1.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7059,
"prior_weight": 0.2941
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663776",
"player_name": "Patrick Sandoval",
"position": "Starter",
"team": "BOS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_R": 4.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 8.0,
"delta": 2.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 8.0,
"delta": 2.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 8.0,
"delta": 2.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 8.0,
"delta": 2.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BOS",
"games": 155,
"wins": 84,
"losses": 71,
"win_pct": 0.5419,
"runs_scored": 677.0,
"runs_allowed": 593.0,
"run_differential": 84.0,
"run_differential_per_game": 0.5419,
"avg_runs_scored": 4.3677,
"avg_runs_allowed": 3.8258,
"offense_index": 0.9726,
"defense_index": 1.1739,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.0,
"avg_runs_allowed": 3.5,
"run_differential": -5.0
},
"available": true,
"quality_score": 0.067
},
"opponent": {
"team": "TB",
"games": 154,
"wins": 94,
"losses": 60,
"win_pct": 0.6104,
"runs_scored": 702.0,
"runs_allowed": 623.0,
"run_differential": 79.0,
"run_differential_per_game": 0.513,
"avg_runs_scored": 4.5584,
"avg_runs_allowed": 4.0455,
"offense_index": 1.015,
"defense_index": 1.1101,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 2.2,
"run_differential": 26.0
},
"available": true,
"quality_score": 0.2617
},
"edges": {
"quality_edge": -0.1947,
"offense_edge": -0.0274,
"opponent_offense_edge": 0.015,
"defense_strength": 0.1739,
"opponent_defense_weakness": -0.1101,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9968,
"run_prevention": 0.9947,
"strikeout": 0.993
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663776",
"profile": {
"available": true,
"pitcher_id": "663776",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 252.0,
"k_percent": 23.2,
"bb_percent": 10.9,
"woba": 0.372,
"xwoba": 0.35,
"sweet_spot_percent": 35.4,
"barrel_batted_rate": 6.9,
"hard_hit_percent": 36.0,
"avg_best_speed": 76.2705,
"avg_hyper_speed": 93.6935,
"whiff_percent": 25.5,
"swing_percent": 46.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.6453,
"command_and_miss": 0.0121,
"regression_edge": 0.6286,
"xwoba_edge": -1.0929,
"barrel_edge": 0.0667,
"hard_hit_edge": 0.2714,
"whiff_edge": 0.0714,
"bb_edge": -0.45,
"pitch_design_score": -0.1066
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663776",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 91,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 91,
"pitch_usage": 0.0,
"release_speed": 87.9477951620701,
"release_spin_rate": 2158.5343835685158,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 91,
"pitch_usage": 0.0,
"release_speed": 87.9477951620701,
"release_spin_rate": 2158.5343835685158,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 87.9478,
"release_spin_rate": 2158.5344,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1066,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.7613,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.3039,
"sample_weight": 1.0,
"run_prevention_factor": 1.0258,
"strikeout_factor": 1.0097,
"walk_factor": 1.036,
"homer_factor": 1.0166,
"woba_minus_xwoba": 0.022,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "663776",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0258,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0258,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.036,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0166,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0097,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 5,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 8,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"Pitches": 90,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +7 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260920_BOS@TB.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_BOS@TB | home | Griffin Jax | Griffin Jax | True | 5.0 | 5.0 | 0 | 3 | 0 | -3 | 2/3 | 3/2 | 6/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.5367412140575083,
"WHIP": 1.159744408945687,
"IP": 104.1,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 4.54,
"recent_avg_IP": 4.667,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0016,
"sample_weight": 1.0,
"run_prevention_factor": 1.0001,
"strikeout_factor": 1.0497,
"walk_factor": 0.972,
"homer_factor": 1.0586,
"regression_flag": "neutral",
"k_percent": 25.6,
"bb_percent": 7.7,
"woba": 0.303,
"xwoba": 0.322,
"barrel_percent": 9.2,
"hard_hit_percent": 40.4,
"whiff_percent": 30.1
},
"espn_rank": {
"rank": 361,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 104.1,
"season_ERA": 3.537,
"season_WHIP": 1.16,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "643377",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.1,
"ER": 9.0,
"R": 12.0,
"H": 20.0,
"BB": 6.0,
"SO": 28.0,
"HR": 2.0,
"BF": 96.0,
"Pitches": 371.0
},
"per_game": {
"IP": 4.2,
"ER": 1.8,
"R": 2.4,
"H": 4.0,
"BB": 1.2,
"SO": 5.6,
"HR": 0.4,
"BF": 19.2,
"Pitches": 74.2
},
"rates": {
"ERA": 3.4714,
"WHIP": 1.1143,
"ER_per_IP": 0.38571,
"H_per_IP": 0.85714,
"BB_per_IP": 0.25714,
"SO_per_IP": 1.2,
"HR_per_IP": 0.08571
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.1,
"ER": 24.0,
"R": 27.0,
"H": 41.0,
"BB": 13.0,
"SO": 57.0,
"HR": 6.0,
"BF": 204.0,
"Pitches": 760.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4,
"R": 2.7,
"H": 4.1,
"BB": 1.3,
"SO": 5.7,
"HR": 0.6,
"BF": 20.4,
"Pitches": 76.0
},
"rates": {
"ERA": 4.2914,
"WHIP": 1.0728,
"ER_per_IP": 0.47682,
"H_per_IP": 0.81457,
"BB_per_IP": 0.25828,
"SO_per_IP": 1.13245,
"HR_per_IP": 0.11921
}
},
"season": {
"games": 31,
"totals": {
"IP": 104.1,
"ER": 41.0,
"R": 51.0,
"H": 89.0,
"BB": 32.0,
"SO": 110.0,
"HR": 15.0,
"BF": 425.0,
"Pitches": 1582.0
},
"per_game": {
"IP": 3.1,
"ER": 1.3226,
"R": 1.6452,
"H": 2.871,
"BB": 1.0323,
"SO": 3.5484,
"HR": 0.4839,
"BF": 13.7097,
"Pitches": 51.0323
},
"rates": {
"ERA": 3.5367,
"WHIP": 1.1597,
"ER_per_IP": 0.39297,
"H_per_IP": 0.85304,
"BB_per_IP": 0.30671,
"SO_per_IP": 1.05431,
"HR_per_IP": 0.14377
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 1.979,
"predicted_H": 3.946,
"predicted_BB": 1.295,
"predicted_SO": 5.124,
"predicted_HR": 0.526,
"predicted_ERA": 3.8856,
"predicted_WHIP": 1.1434
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.979,
"final": 2.3963,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 3.946,
"final": 3.1507,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.295,
"final": 1.9918,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 5.124,
"final": 5.482,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.526,
"final": 0.7197,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.8856,
"final": 3.8856,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1434,
"final": 1.1434,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 50.1,
"ER": 24,
"H": 41,
"BB": 13,
"SO": 57,
"HR": 6,
"ERA": 4.291390728476822,
"WHIP": 1.0728476821192054,
"K9": 10.192052980132452,
"HR9": 1.0728476821192054,
"games_pitched": 10,
"quality_starts": 2,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.9724113810175132,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 2.0,
"predicted_BB": 3.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "643377",
"player_name": "Griffin Jax",
"position": "Starter",
"team": "TB",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TB",
"games": 154,
"wins": 94,
"losses": 60,
"win_pct": 0.6104,
"runs_scored": 702.0,
"runs_allowed": 623.0,
"run_differential": 79.0,
"run_differential_per_game": 0.513,
"avg_runs_scored": 4.5584,
"avg_runs_allowed": 4.0455,
"offense_index": 1.015,
"defense_index": 1.1101,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 2.2,
"run_differential": 26.0
},
"available": true,
"quality_score": 0.2617
},
"opponent": {
"team": "BOS",
"games": 155,
"wins": 84,
"losses": 71,
"win_pct": 0.5419,
"runs_scored": 677.0,
"runs_allowed": 593.0,
"run_differential": 84.0,
"run_differential_per_game": 0.5419,
"avg_runs_scored": 4.3677,
"avg_runs_allowed": 3.8258,
"offense_index": 0.9726,
"defense_index": 1.1739,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.0,
"avg_runs_allowed": 3.5,
"run_differential": -5.0
},
"available": true,
"quality_score": 0.067
},
"edges": {
"quality_edge": 0.1947,
"offense_edge": 0.015,
"opponent_offense_edge": -0.0274,
"defense_strength": 0.1101,
"opponent_defense_weakness": -0.1739,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0122,
"run_prevention": 0.9749,
"strikeout": 1.008
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "643377",
"profile": {
"available": true,
"pitcher_id": "643377",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 407.0,
"k_percent": 25.6,
"bb_percent": 7.7,
"woba": 0.303,
"xwoba": 0.322,
"sweet_spot_percent": 34.7,
"barrel_batted_rate": 9.2,
"hard_hit_percent": 40.4,
"avg_best_speed": 77.7959,
"avg_hyper_speed": 94.2092,
"whiff_percent": 30.1,
"swing_percent": 48.4
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.1791,
"command_and_miss": 0.5564,
"regression_edge": -0.5429,
"xwoba_edge": -0.2929,
"barrel_edge": -0.4444,
"hard_hit_edge": -0.3571,
"whiff_edge": 0.7286,
"bb_edge": 0.35,
"pitch_design_score": 0.103
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "643377",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 77,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 77,
"pitch_usage": 0.0,
"release_speed": 91.69040072946703,
"release_spin_rate": 2573.7540952383274,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 77,
"pitch_usage": 0.0,
"release_speed": 91.69040072946703,
"release_spin_rate": 2573.7540952383274,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 91.6904,
"release_spin_rate": 2573.7541,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.103,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.7358,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.0016,
"sample_weight": 1.0,
"run_prevention_factor": 1.0001,
"strikeout_factor": 1.0497,
"walk_factor": 0.972,
"homer_factor": 1.0586,
"woba_minus_xwoba": -0.019,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "643377",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0001,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0001,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.972,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0586,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0497,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 2,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 20,
"Pitches": 88,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
}
],
"provenance": {
"prediction": "output/games/20260920_BOS@TB.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_CHC@CIN | away | David Peterson | David Peterson | True | 5.0 | 6.0 | 3 | 4 | 1 | -3 | 6/3 | 1/1 | 3/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.1116504854368925,
"WHIP": 1.5509708737864076,
"IP": 137.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.016,
"recent_avg_IP": 5.0,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3026,
"sample_weight": 1.0,
"run_prevention_factor": 1.0257,
"strikeout_factor": 0.9726,
"walk_factor": 1.018,
"homer_factor": 1.0158,
"regression_flag": "neutral",
"k_percent": 19.9,
"bb_percent": 10.0,
"woba": 0.336,
"xwoba": 0.337,
"barrel_percent": 6.1,
"hard_hit_percent": 40.3,
"whiff_percent": 22.3
},
"espn_rank": {
"rank": 799,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "656849",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 12.0,
"R": 12.0,
"H": 26.0,
"BB": 15.0,
"SO": 29.0,
"HR": 3.0,
"BF": 115.0,
"Pitches": 450.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4,
"R": 2.4,
"H": 5.2,
"BB": 3.0,
"SO": 5.8,
"HR": 0.6,
"BF": 23.0,
"Pitches": 90.0
},
"rates": {
"ERA": 4.32,
"WHIP": 1.64,
"ER_per_IP": 0.48,
"H_per_IP": 1.04,
"BB_per_IP": 0.6,
"SO_per_IP": 1.16,
"HR_per_IP": 0.12
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.1,
"ER": 19.0,
"R": 21.0,
"H": 50.0,
"BB": 24.0,
"SO": 50.0,
"HR": 5.0,
"BF": 216.0,
"Pitches": 834.0
},
"per_game": {
"IP": 4.2,
"ER": 1.9,
"R": 2.1,
"H": 5.0,
"BB": 2.4,
"SO": 5.0,
"HR": 0.5,
"BF": 21.6,
"Pitches": 83.4
},
"rates": {
"ERA": 3.5379,
"WHIP": 1.531,
"ER_per_IP": 0.3931,
"H_per_IP": 1.03448,
"BB_per_IP": 0.49655,
"SO_per_IP": 1.03448,
"HR_per_IP": 0.10345
}
},
"season": {
"games": 30,
"totals": {
"IP": 137.1,
"ER": 78.0,
"R": 85.0,
"H": 151.0,
"BB": 62.0,
"SO": 124.0,
"HR": 14.0,
"BF": 622.0,
"Pitches": 2302.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6,
"R": 2.8333,
"H": 5.0333,
"BB": 2.0667,
"SO": 4.1333,
"HR": 0.4667,
"BF": 20.7333,
"Pitches": 76.7333
},
"rates": {
"ERA": 5.1117,
"WHIP": 1.551,
"ER_per_IP": 0.56796,
"H_per_IP": 1.09951,
"BB_per_IP": 0.45146,
"SO_per_IP": 0.90291,
"HR_per_IP": 0.10194
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.292,
"predicted_H": 5.038,
"predicted_BB": 2.477,
"predicted_SO": 5.066,
"predicted_HR": 0.563,
"predicted_ERA": 4.2601,
"predicted_WHIP": 1.5517
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.292,
"final": 2.9929,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.038,
"final": 5.4328,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.477,
"final": 1.8709,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 5.066,
"final": 4.2182,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.563,
"final": 1.1527,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.2601,
"final": 4.2601,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5517,
"final": 1.5517,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 48.1,
"ER": 19,
"H": 50,
"BB": 24,
"SO": 50,
"HR": 5,
"ERA": 3.537931034482759,
"WHIP": 1.5310344827586209,
"K9": 9.310344827586208,
"HR9": 0.9310344827586208,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 0.8991018354591667,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 3.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "656849",
"player_name": "David Peterson",
"position": "Starter",
"team": "CHC",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_R": 4.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CHC",
"games": 155,
"wins": 86,
"losses": 69,
"win_pct": 0.5548,
"runs_scored": 826.0,
"runs_allowed": 682.0,
"run_differential": 144.0,
"run_differential_per_game": 0.929,
"avg_runs_scored": 5.329,
"avg_runs_allowed": 4.4,
"offense_index": 1.1866,
"defense_index": 1.0207,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.5,
"avg_runs_allowed": 4.2,
"run_differential": 13.0
},
"available": true,
"quality_score": 0.1604
},
"opponent": {
"team": "CIN",
"games": 155,
"wins": 72,
"losses": 83,
"win_pct": 0.4645,
"runs_scored": 641.0,
"runs_allowed": 796.0,
"run_differential": -155.0,
"run_differential_per_game": -1.0,
"avg_runs_scored": 4.1355,
"avg_runs_allowed": 5.1355,
"offense_index": 0.9208,
"defense_index": 0.8745,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 7.7,
"run_differential": -46.0
},
"available": true,
"quality_score": -0.2226
},
"edges": {
"quality_edge": 0.383,
"offense_edge": 0.1866,
"opponent_offense_edge": -0.0792,
"defense_strength": 0.0207,
"opponent_defense_weakness": 0.1255,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0191,
"run_prevention": 0.9661,
"strikeout": 1.0178
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "656849",
"profile": {
"available": true,
"pitcher_id": "656849",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 594.0,
"k_percent": 19.9,
"bb_percent": 10.0,
"woba": 0.336,
"xwoba": 0.337,
"sweet_spot_percent": 34.5,
"barrel_batted_rate": 6.1,
"hard_hit_percent": 40.3,
"avg_best_speed": 77.78,
"avg_hyper_speed": 94.3737,
"whiff_percent": 22.3,
"swing_percent": 46.1
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.3813,
"command_and_miss": -0.315,
"regression_edge": -0.0286,
"xwoba_edge": -0.7214,
"barrel_edge": 0.2444,
"hard_hit_edge": -0.3429,
"whiff_edge": -0.3857,
"bb_edge": -0.225,
"pitch_design_score": -0.0542
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "656849",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 77,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 77,
"pitch_usage": 0.0,
"release_speed": 88.88393641474616,
"release_spin_rate": 2122.857318312684,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 77,
"pitch_usage": 0.0,
"release_speed": 88.88393641474616,
"release_spin_rate": 2122.857318312684,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 88.8839,
"release_spin_rate": 2122.8573,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0542,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.3868,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.3026,
"sample_weight": 1.0,
"run_prevention_factor": 1.0257,
"strikeout_factor": 0.9726,
"walk_factor": 1.018,
"homer_factor": 1.0158,
"woba_minus_xwoba": -0.001,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "656849",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0257,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0257,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 1.018,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0158,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9726,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 6,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 22,
"Pitches": 96,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260920_CHC@CIN.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_CHC@CIN | home | Rhett Lowder | Rhett Lowder | True | 4.1 | 3.0 | -4 | 4 | 5 | 1 | 6/6 | 1/3 | 6/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.79088471849866,
"WHIP": 1.5201072386058982,
"IP": 124.1,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 4.889,
"recent_avg_IP": 4.667,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.6159,
"sample_weight": 1.0,
"run_prevention_factor": 1.0523,
"strikeout_factor": 0.9383,
"walk_factor": 1.0,
"homer_factor": 1.0856,
"regression_flag": "neutral",
"k_percent": 17.4,
"bb_percent": 9.1,
"woba": 0.351,
"xwoba": 0.351,
"barrel_percent": 9.8,
"hard_hit_percent": 38.9,
"whiff_percent": 18.8
},
"espn_rank": {
"rank": 556,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "695076",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.1,
"ER": 22.0,
"R": 24.0,
"H": 30.0,
"BB": 9.0,
"SO": 16.0,
"HR": 5.0,
"BF": 111.0,
"Pitches": 455.0
},
"per_game": {
"IP": 4.2,
"ER": 4.4,
"R": 4.8,
"H": 6.0,
"BB": 1.8,
"SO": 3.2,
"HR": 1.0,
"BF": 22.2,
"Pitches": 91.0
},
"rates": {
"ERA": 8.4857,
"WHIP": 1.6714,
"ER_per_IP": 0.94286,
"H_per_IP": 1.28571,
"BB_per_IP": 0.38571,
"SO_per_IP": 0.68571,
"HR_per_IP": 0.21429
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.1,
"ER": 34.0,
"R": 36.0,
"H": 55.0,
"BB": 16.0,
"SO": 37.0,
"HR": 9.0,
"BF": 228.0,
"Pitches": 909.0
},
"per_game": {
"IP": 5.1,
"ER": 3.4,
"R": 3.6,
"H": 5.5,
"BB": 1.6,
"SO": 3.7,
"HR": 0.9,
"BF": 22.8,
"Pitches": 90.9
},
"rates": {
"ERA": 5.8471,
"WHIP": 1.3567,
"ER_per_IP": 0.64968,
"H_per_IP": 1.05096,
"BB_per_IP": 0.30573,
"SO_per_IP": 0.70701,
"HR_per_IP": 0.17197
}
},
"season": {
"games": 27,
"totals": {
"IP": 124.1,
"ER": 80.0,
"R": 83.0,
"H": 138.0,
"BB": 51.0,
"SO": 98.0,
"HR": 18.0,
"BF": 563.0,
"Pitches": 2157.0
},
"per_game": {
"IP": 4.2,
"ER": 2.963,
"R": 3.0741,
"H": 5.1111,
"BB": 1.8889,
"SO": 3.6296,
"HR": 0.6667,
"BF": 20.8519,
"Pitches": 79.8889
},
"rates": {
"ERA": 5.7909,
"WHIP": 1.5201,
"ER_per_IP": 0.64343,
"H_per_IP": 1.10992,
"BB_per_IP": 0.41019,
"SO_per_IP": 0.7882,
"HR_per_IP": 0.14477
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 3.59,
"predicted_H": 5.541,
"predicted_BB": 1.773,
"predicted_SO": 3.639,
"predicted_HR": 0.875,
"predicted_ERA": 6.6437,
"predicted_WHIP": 1.5039
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.416,
"form_weight": 0.584,
"form_reliability": 0.8438,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 3.59,
"final": 4.1766,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.541,
"final": 4.9,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.773,
"final": 1.4514,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 3.639,
"final": 4.6212,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.875,
"final": 1.343,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.6437,
"final": 6.6437,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5039,
"final": 1.5039,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 52.1,
"ER": 34,
"H": 55,
"BB": 16,
"SO": 37,
"HR": 9,
"ERA": 5.8471337579617835,
"WHIP": 1.356687898089172,
"K9": 6.3630573248407645,
"HR9": 1.5477707006369426,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 1.1545284772338205,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 5.0,
"predicted_H": 4.0,
"predicted_BB": 1.0,
"predicted_SO": 6.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 5,
"predicted_H": 4,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 2
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 5,
"predicted_H": 6,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "695076",
"player_name": "Rhett Lowder",
"position": "Starter",
"team": "CIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 5.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 4.6667,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 5.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 4.1,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 4.1,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.1,
"after": 4.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 4.1,
"predicted_R": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.1,
"after": 4.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CIN",
"games": 155,
"wins": 72,
"losses": 83,
"win_pct": 0.4645,
"runs_scored": 641.0,
"runs_allowed": 796.0,
"run_differential": -155.0,
"run_differential_per_game": -1.0,
"avg_runs_scored": 4.1355,
"avg_runs_allowed": 5.1355,
"offense_index": 0.9208,
"defense_index": 0.8745,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 7.7,
"run_differential": -46.0
},
"available": true,
"quality_score": -0.2226
},
"opponent": {
"team": "CHC",
"games": 155,
"wins": 86,
"losses": 69,
"win_pct": 0.5548,
"runs_scored": 826.0,
"runs_allowed": 682.0,
"run_differential": 144.0,
"run_differential_per_game": 0.929,
"avg_runs_scored": 5.329,
"avg_runs_allowed": 4.4,
"offense_index": 1.1866,
"defense_index": 1.0207,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.5,
"avg_runs_allowed": 4.2,
"run_differential": 13.0
},
"available": true,
"quality_score": 0.1604
},
"edges": {
"quality_edge": -0.383,
"offense_edge": -0.0792,
"opponent_offense_edge": 0.1866,
"defense_strength": -0.1255,
"opponent_defense_weakness": -0.0207,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9735,
"run_prevention": 1.0616,
"strikeout": 0.9736
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "695076",
"profile": {
"available": true,
"pitcher_id": "695076",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 530.0,
"k_percent": 17.4,
"bb_percent": 9.1,
"woba": 0.351,
"xwoba": 0.351,
"sweet_spot_percent": 37.7,
"barrel_batted_rate": 9.8,
"hard_hit_percent": 38.9,
"avg_best_speed": 79.99,
"avg_hyper_speed": 94.3002,
"whiff_percent": 18.8,
"swing_percent": 44.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.8144,
"command_and_miss": -0.6057,
"regression_edge": 0.0,
"xwoba_edge": -1.1214,
"barrel_edge": -0.5778,
"hard_hit_edge": -0.1429,
"whiff_edge": -0.8857,
"bb_edge": 0.0,
"pitch_design_score": -0.0289
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "695076",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 92,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 89.33470320650996,
"release_spin_rate": 2351.7989851419666,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 89.33470320650996,
"release_spin_rate": 2351.7989851419666,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 89.3347,
"release_spin_rate": 2351.799,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0289,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2065,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.6159,
"sample_weight": 1.0,
"run_prevention_factor": 1.0523,
"strikeout_factor": 0.9383,
"walk_factor": 1.0,
"homer_factor": 1.0856,
"woba_minus_xwoba": 0.0,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "695076",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0523,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 1.0523,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0856,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9383,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 6,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 22,
"Pitches": 89,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260920_CHC@CIN.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_DET@CHW | away | Troy Melton | Troy Melton | True | 6.0 | 3.2 | -7 | 3 | 4 | 1 | 4/4 | 4/3 | 4/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.5210843373493974,
"WHIP": 1.1024096385542168,
"IP": 110.2,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 5.825,
"recent_avg_IP": 5.267,
"last_start_IP": 2.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1244,
"sample_weight": 1.0,
"run_prevention_factor": 0.9894,
"strikeout_factor": 0.9817,
"walk_factor": 0.968,
"homer_factor": 0.9684,
"regression_flag": "neutral",
"k_percent": 20.0,
"bb_percent": 7.5,
"woba": 0.291,
"xwoba": 0.299,
"barrel_percent": 6.2,
"hard_hit_percent": 37.4,
"whiff_percent": 23.8
},
"espn_rank": {
"rank": 36,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 6.0,
"season_IP": 110.2,
"season_ERA": 2.521,
"season_WHIP": 1.102,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "675512",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.1,
"ER": 17.0,
"R": 19.0,
"H": 32.0,
"BB": 9.0,
"SO": 17.0,
"HR": 5.0,
"BF": 122.0,
"Pitches": 441.0
},
"per_game": {
"IP": 5.1,
"ER": 3.4,
"R": 3.8,
"H": 6.4,
"BB": 1.8,
"SO": 3.4,
"HR": 1.0,
"BF": 24.4,
"Pitches": 88.2
},
"rates": {
"ERA": 5.8101,
"WHIP": 1.557,
"ER_per_IP": 0.64557,
"H_per_IP": 1.21519,
"BB_per_IP": 0.34177,
"SO_per_IP": 0.64557,
"HR_per_IP": 0.18987
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.2,
"ER": 20.0,
"R": 25.0,
"H": 55.0,
"BB": 19.0,
"SO": 40.0,
"HR": 6.0,
"BF": 239.0,
"Pitches": 899.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0,
"R": 2.5,
"H": 5.5,
"BB": 1.9,
"SO": 4.0,
"HR": 0.6,
"BF": 23.9,
"Pitches": 89.9
},
"rates": {
"ERA": 3.2335,
"WHIP": 1.3293,
"ER_per_IP": 0.35928,
"H_per_IP": 0.98802,
"BB_per_IP": 0.34132,
"SO_per_IP": 0.71856,
"HR_per_IP": 0.10778
}
},
"season": {
"games": 19,
"totals": {
"IP": 110.2,
"ER": 31.0,
"R": 37.0,
"H": 88.0,
"BB": 34.0,
"SO": 90.0,
"HR": 13.0,
"BF": 451.0,
"Pitches": 1690.0
},
"per_game": {
"IP": 5.2,
"ER": 1.6316,
"R": 1.9474,
"H": 4.6316,
"BB": 1.7895,
"SO": 4.7368,
"HR": 0.6842,
"BF": 23.7368,
"Pitches": 88.9474
},
"rates": {
"ERA": 2.5211,
"WHIP": 1.1024,
"ER_per_IP": 0.28012,
"H_per_IP": 0.79518,
"BB_per_IP": 0.30723,
"SO_per_IP": 0.81325,
"HR_per_IP": 0.11747
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.698,
"predicted_H": 5.826,
"predicted_BB": 1.928,
"predicted_SO": 4.228,
"predicted_HR": 0.827,
"predicted_ERA": 4.3219,
"predicted_WHIP": 1.3804
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.438,
"form_weight": 0.562,
"form_reliability": 0.7917,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.698,
"final": 3.2683,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.826,
"final": 5.4642,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.928,
"final": 2.8355,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.228,
"final": 4.1281,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.827,
"final": 0.4648,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.3219,
"final": 4.3219,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3804,
"final": 1.3804,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.2,
"ER": 20,
"H": 55,
"BB": 19,
"SO": 40,
"HR": 6,
"ERA": 3.2335329341317367,
"WHIP": 1.3293413173652695,
"K9": 6.467065868263473,
"HR9": 0.9700598802395209,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 0.8598147200348428,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_BB": 4.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3,
"predicted_H": 5,
"predicted_BB": 4,
"predicted_SO": 4,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "675512",
"player_name": "Troy Melton",
"position": "Starter",
"team": "DET",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 4.0,
"delta": -1.0,
"percent_delta": -0.2,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_H",
"before": 5.0,
"after": 4.0,
"delta": -1.0,
"percent_delta": -0.2,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 4.0,
"delta": -1.0,
"percent_delta": -0.2,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 0,
"deboosted_metrics": 2,
"better_metrics": 2,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "DET",
"games": 155,
"wins": 73,
"losses": 82,
"win_pct": 0.471,
"runs_scored": 696.0,
"runs_allowed": 621.0,
"run_differential": 75.0,
"run_differential_per_game": 0.4839,
"avg_runs_scored": 4.4903,
"avg_runs_allowed": 4.0065,
"offense_index": 0.9999,
"defense_index": 1.1209,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.2,
"avg_runs_allowed": 3.7,
"run_differential": 25.0
},
"available": true,
"quality_score": 0.1046
},
"opponent": {
"team": "CHW",
"games": 155,
"wins": 79,
"losses": 76,
"win_pct": 0.5097,
"runs_scored": 725.0,
"runs_allowed": 690.0,
"run_differential": 35.0,
"run_differential_per_game": 0.2258,
"avg_runs_scored": 4.6774,
"avg_runs_allowed": 4.4516,
"offense_index": 1.0415,
"defense_index": 1.0088,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.6,
"run_differential": -6.0
},
"available": true,
"quality_score": 0.0009
},
"edges": {
"quality_edge": 0.1037,
"offense_edge": -0.0001,
"opponent_offense_edge": 0.0415,
"defense_strength": 0.1209,
"opponent_defense_weakness": -0.0088,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0061,
"run_prevention": 0.9894,
"strikeout": 0.9998
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "675512",
"profile": {
"available": true,
"pitcher_id": "675512",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 433.0,
"k_percent": 20.0,
"bb_percent": 7.5,
"woba": 0.291,
"xwoba": 0.299,
"sweet_spot_percent": 31.5,
"barrel_batted_rate": 6.2,
"hard_hit_percent": 37.4,
"avg_best_speed": 78.3672,
"avg_hyper_speed": 93.6738,
"whiff_percent": 23.8,
"swing_percent": 50.1
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.2997,
"command_and_miss": -0.1086,
"regression_edge": -0.2286,
"xwoba_edge": 0.3643,
"barrel_edge": 0.2222,
"hard_hit_edge": 0.0714,
"whiff_edge": -0.1714,
"bb_edge": 0.4,
"pitch_design_score": 0.0962
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "675512",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 90,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 90,
"pitch_usage": 0.0,
"release_speed": 91.56968678699701,
"release_spin_rate": 2197.8555017876674,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 90,
"pitch_usage": 0.0,
"release_speed": 91.56968678699701,
"release_spin_rate": 2197.8555017876674,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 91.5697,
"release_spin_rate": 2197.8555,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.0962,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.6875,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.1244,
"sample_weight": 1.0,
"run_prevention_factor": 0.9894,
"strikeout_factor": 0.9817,
"walk_factor": 0.968,
"homer_factor": 0.9684,
"woba_minus_xwoba": -0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "675512",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9894,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.9894,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.968,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9684,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9817,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 4,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 27,
"Pitches": 107,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -7 outs from the projected workload."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260920_DET@CHW.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_DET@CHW | home | Davis Martin | Davis Martin | True | 5.0 | 4.1 | -2 | 3 | 0 | -3 | 7/3 | 0/2 | 7/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.9574468085106385,
"WHIP": 1.297872340425532,
"IP": 141.0,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.218,
"recent_avg_IP": 3.733,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2638,
"sample_weight": 1.0,
"run_prevention_factor": 1.0224,
"strikeout_factor": 0.9737,
"walk_factor": 0.964,
"homer_factor": 1.0403,
"regression_flag": "neutral",
"k_percent": 19.4,
"bb_percent": 7.3,
"woba": 0.319,
"xwoba": 0.33,
"barrel_percent": 6.4,
"hard_hit_percent": 44.7,
"whiff_percent": 23.0
},
"espn_rank": {
"rank": 62,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663436",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 19.0,
"ER": 6.0,
"R": 9.0,
"H": 17.0,
"BB": 6.0,
"SO": 8.0,
"HR": 4.0,
"BF": 79.0,
"Pitches": 277.0
},
"per_game": {
"IP": 3.2,
"ER": 1.2,
"R": 1.8,
"H": 3.4,
"BB": 1.2,
"SO": 1.6,
"HR": 0.8,
"BF": 15.8,
"Pitches": 55.4
},
"rates": {
"ERA": 2.8421,
"WHIP": 1.2105,
"ER_per_IP": 0.31579,
"H_per_IP": 0.89474,
"BB_per_IP": 0.31579,
"SO_per_IP": 0.42105,
"HR_per_IP": 0.21053
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 44.2,
"ER": 29.0,
"R": 32.0,
"H": 48.0,
"BB": 14.0,
"SO": 25.0,
"HR": 8.0,
"BF": 195.0,
"Pitches": 731.0
},
"per_game": {
"IP": 4.1,
"ER": 2.9,
"R": 3.2,
"H": 4.8,
"BB": 1.4,
"SO": 2.5,
"HR": 0.8,
"BF": 19.5,
"Pitches": 73.1
},
"rates": {
"ERA": 5.8433,
"WHIP": 1.3881,
"ER_per_IP": 0.64925,
"H_per_IP": 1.07463,
"BB_per_IP": 0.31343,
"SO_per_IP": 0.5597,
"HR_per_IP": 0.1791
}
},
"season": {
"games": 27,
"totals": {
"IP": 141.0,
"ER": 62.0,
"R": 65.0,
"H": 140.0,
"BB": 43.0,
"SO": 115.0,
"HR": 14.0,
"BF": 592.0,
"Pitches": 2254.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2963,
"R": 2.4074,
"H": 5.1852,
"BB": 1.5926,
"SO": 4.2593,
"HR": 0.5185,
"BF": 21.9259,
"Pitches": 83.4815
},
"rates": {
"ERA": 3.9574,
"WHIP": 1.2979,
"ER_per_IP": 0.43972,
"H_per_IP": 0.99291,
"BB_per_IP": 0.30496,
"SO_per_IP": 0.8156,
"HR_per_IP": 0.09929
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.027,
"predicted_H": 4.258,
"predicted_BB": 1.404,
"predicted_SO": 2.65,
"predicted_HR": 0.753,
"predicted_ERA": 4.1902,
"predicted_WHIP": 1.3007
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.416,
"form_weight": 0.584,
"form_reliability": 0.8438,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.027,
"final": 2.4318,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 4.258,
"final": 5.3987,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.404,
"final": 0.8199,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 2.65,
"final": 4.4596,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.753,
"final": 0.4398,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1902,
"final": 4.1902,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3007,
"final": 1.3007,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 44.2,
"ER": 29,
"H": 48,
"BB": 14,
"SO": 25,
"HR": 8,
"ERA": 5.843283582089552,
"WHIP": 1.3880597014925373,
"K9": 5.037313432835822,
"HR9": 1.6119402985074627,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 1.1548796275332787,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_BB": 0.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663436",
"player_name": "Davis Martin",
"position": "Starter",
"team": "CHW",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CHW",
"games": 155,
"wins": 79,
"losses": 76,
"win_pct": 0.5097,
"runs_scored": 725.0,
"runs_allowed": 690.0,
"run_differential": 35.0,
"run_differential_per_game": 0.2258,
"avg_runs_scored": 4.6774,
"avg_runs_allowed": 4.4516,
"offense_index": 1.0415,
"defense_index": 1.0088,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.6,
"run_differential": -6.0
},
"available": true,
"quality_score": 0.0009
},
"opponent": {
"team": "DET",
"games": 155,
"wins": 73,
"losses": 82,
"win_pct": 0.471,
"runs_scored": 696.0,
"runs_allowed": 621.0,
"run_differential": 75.0,
"run_differential_per_game": 0.4839,
"avg_runs_scored": 4.4903,
"avg_runs_allowed": 4.0065,
"offense_index": 0.9999,
"defense_index": 1.1209,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.2,
"avg_runs_allowed": 3.7,
"run_differential": 25.0
},
"available": true,
"quality_score": 0.1046
},
"edges": {
"quality_edge": -0.1037,
"offense_edge": 0.0415,
"opponent_offense_edge": -0.0001,
"defense_strength": 0.0088,
"opponent_defense_weakness": -0.1209,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9961,
"run_prevention": 1.0043,
"strikeout": 0.9969
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663436",
"profile": {
"available": true,
"pitcher_id": "663436",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 555.0,
"k_percent": 19.4,
"bb_percent": 7.3,
"woba": 0.319,
"xwoba": 0.33,
"sweet_spot_percent": 34.4,
"barrel_batted_rate": 6.4,
"hard_hit_percent": 44.7,
"avg_best_speed": 79.656,
"avg_hyper_speed": 94.8794,
"whiff_percent": 23.0,
"swing_percent": 48.4
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.334,
"command_and_miss": -0.1771,
"regression_edge": -0.3143,
"xwoba_edge": -0.5214,
"barrel_edge": 0.1778,
"hard_hit_edge": -0.9714,
"whiff_edge": -0.2857,
"bb_edge": 0.45,
"pitch_design_score": 0.0093
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663436",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 59,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 59,
"pitch_usage": 0.0,
"release_speed": 90.01624850726196,
"release_spin_rate": 2480.5211487507763,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 59,
"pitch_usage": 0.0,
"release_speed": 90.01624850726196,
"release_spin_rate": 2480.5211487507763,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 90.0162,
"release_spin_rate": 2480.5211,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.0093,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0661,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.2638,
"sample_weight": 1.0,
"run_prevention_factor": 1.0224,
"strikeout_factor": 0.9737,
"walk_factor": 0.964,
"homer_factor": 1.0403,
"woba_minus_xwoba": -0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "663436",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0224,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0224,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.964,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0403,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9737,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 7,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 95,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was -4."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
}
],
"provenance": {
"prediction": "output/games/20260920_DET@CHW.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_KC@PIT | away | Michael Wacha | Michael Wacha | True | 6.1 | 5.2 | -2 | 2 | 2 | 0 | 4/4 | 3/4 | 5/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.3392226148409896,
"WHIP": 1.0971731448763251,
"IP": 188.2,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 6.289,
"recent_avg_IP": 6.6,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0265,
"sample_weight": 1.0,
"run_prevention_factor": 0.9977,
"strikeout_factor": 0.9674,
"walk_factor": 0.946,
"homer_factor": 0.9774,
"regression_flag": "neutral",
"k_percent": 19.6,
"bb_percent": 6.4,
"woba": 0.3,
"xwoba": 0.305,
"barrel_percent": 6.8,
"hard_hit_percent": 36.2,
"whiff_percent": 21.7
},
"espn_rank": {
"rank": 14,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "608379",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 33.0,
"ER": 8.0,
"R": 8.0,
"H": 20.0,
"BB": 8.0,
"SO": 29.0,
"HR": 6.0,
"BF": 128.0,
"Pitches": 487.0
},
"per_game": {
"IP": 6.2,
"ER": 1.6,
"R": 1.6,
"H": 4.0,
"BB": 1.6,
"SO": 5.8,
"HR": 1.2,
"BF": 25.6,
"Pitches": 97.4
},
"rates": {
"ERA": 2.1818,
"WHIP": 0.8485,
"ER_per_IP": 0.24242,
"H_per_IP": 0.60606,
"BB_per_IP": 0.24242,
"SO_per_IP": 0.87879,
"HR_per_IP": 0.18182
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 63.1,
"ER": 19.0,
"R": 21.0,
"H": 47.0,
"BB": 13.0,
"SO": 48.0,
"HR": 12.0,
"BF": 250.0,
"Pitches": 951.0
},
"per_game": {
"IP": 6.1,
"ER": 1.9,
"R": 2.1,
"H": 4.7,
"BB": 1.3,
"SO": 4.8,
"HR": 1.2,
"BF": 25.0,
"Pitches": 95.1
},
"rates": {
"ERA": 2.7,
"WHIP": 0.9474,
"ER_per_IP": 0.3,
"H_per_IP": 0.74211,
"BB_per_IP": 0.20526,
"SO_per_IP": 0.75789,
"HR_per_IP": 0.18947
}
},
"season": {
"games": 30,
"totals": {
"IP": 188.2,
"ER": 70.0,
"R": 74.0,
"H": 158.0,
"BB": 49.0,
"SO": 149.0,
"HR": 27.0,
"BF": 760.0,
"Pitches": 2825.0
},
"per_game": {
"IP": 6.1,
"ER": 2.3333,
"R": 2.4667,
"H": 5.2667,
"BB": 1.6333,
"SO": 4.9667,
"HR": 0.9,
"BF": 25.3333,
"Pitches": 94.1667
},
"rates": {
"ERA": 3.3392,
"WHIP": 1.0972,
"ER_per_IP": 0.37102,
"H_per_IP": 0.83746,
"BB_per_IP": 0.25972,
"SO_per_IP": 0.78975,
"HR_per_IP": 0.14311
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 2.068,
"predicted_H": 4.783,
"predicted_BB": 1.637,
"predicted_SO": 5.398,
"predicted_HR": 1.117,
"predicted_ERA": 2.8803,
"predicted_WHIP": 0.9935
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 6.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.068,
"final": 1.6297,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.783,
"final": 4.4617,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.637,
"final": 2.1963,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 5.398,
"final": 5.2347,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.117,
"final": 0.6586,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.8803,
"final": 2.8803,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.9935,
"final": 0.9935,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 63.1,
"ER": 19,
"H": 47,
"BB": 13,
"SO": 48,
"HR": 12,
"ERA": 2.6999999999999997,
"WHIP": 0.9473684210526315,
"K9": 6.821052631578947,
"HR9": 1.7052631578947368,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.7902429425372064,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.1,
"predicted_ER": 1,
"predicted_H": 4,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "608379",
"player_name": "Michael Wacha",
"position": "Starter",
"team": "KC",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.3333,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_R": 1.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.1,
"after": 6.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "KC",
"games": 155,
"wins": 67,
"losses": 88,
"win_pct": 0.4323,
"runs_scored": 653.0,
"runs_allowed": 754.0,
"run_differential": -101.0,
"run_differential_per_game": -0.6516,
"avg_runs_scored": 4.2129,
"avg_runs_allowed": 4.8645,
"offense_index": 0.9369,
"defense_index": 0.9243,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.2,
"avg_runs_allowed": 4.4,
"run_differential": -12.0
},
"available": true,
"quality_score": -0.2072
},
"opponent": {
"team": "PIT",
"games": 155,
"wins": 78,
"losses": 77,
"win_pct": 0.5032,
"runs_scored": 744.0,
"runs_allowed": 716.0,
"run_differential": 28.0,
"run_differential_per_game": 0.1806,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.6194,
"offense_index": 1.0675,
"defense_index": 0.9734,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.5,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.0598
},
"edges": {
"quality_edge": -0.267,
"offense_edge": -0.0631,
"opponent_offense_edge": 0.0675,
"defense_strength": -0.0757,
"opponent_defense_weakness": 0.0266,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9843,
"run_prevention": 1.0317,
"strikeout": 0.9866
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "608379",
"profile": {
"available": true,
"pitcher_id": "608379",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 708.0,
"k_percent": 19.6,
"bb_percent": 6.4,
"woba": 0.3,
"xwoba": 0.305,
"sweet_spot_percent": 34.1,
"barrel_batted_rate": 6.8,
"hard_hit_percent": 36.2,
"avg_best_speed": 77.2235,
"avg_hyper_speed": 93.5071,
"whiff_percent": 21.7,
"swing_percent": 48.5
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1813,
"command_and_miss": -0.1843,
"regression_edge": -0.1429,
"xwoba_edge": 0.1929,
"barrel_edge": 0.0889,
"hard_hit_edge": 0.2429,
"whiff_edge": -0.4714,
"bb_edge": 0.675,
"pitch_design_score": -0.1599
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "608379",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 93,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 86.9953545090726,
"release_spin_rate": 1981.837302341622,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 86.9953545090726,
"release_spin_rate": 1981.837302341622,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 86.9954,
"release_spin_rate": 1981.8373,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1599,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.1422,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.0265,
"sample_weight": 1.0,
"run_prevention_factor": 0.9977,
"strikeout_factor": 0.9674,
"walk_factor": 0.946,
"homer_factor": 0.9774,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "608379",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9977,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9977,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.946,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9774,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9674,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 26,
"Pitches": 115,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260920_KC@PIT.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_KC@PIT | home | Lake Bachar | Lake Bachar | True | 5.0 | 1.0 | -12 | 0 | 1 | 1 | 1/3 | 5/0 | 8/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.951417004048583,
"WHIP": 1.0445344129554657,
"IP": 82.1,
"games_started": null,
"games_pitched": 49,
"role_avg_IP": 2.233,
"recent_avg_IP": 2.067,
"last_start_IP": 2.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2923,
"sample_weight": 1.0,
"run_prevention_factor": 0.9752,
"strikeout_factor": 1.0451,
"walk_factor": 1.026,
"homer_factor": 0.9774,
"regression_flag": "neutral",
"k_percent": 25.0,
"bb_percent": 10.4,
"woba": 0.288,
"xwoba": 0.292,
"barrel_percent": 8.1,
"hard_hit_percent": 34.1,
"whiff_percent": 29.9
},
"espn_rank": {
"rank": 141,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 82.1,
"season_ERA": 2.951,
"season_WHIP": 1.045,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.734,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7699,
"prior_weight": 0.2301
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669199",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 49,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 9.1,
"ER": 2.0,
"R": 2.0,
"H": 6.0,
"BB": 5.0,
"SO": 11.0,
"HR": 1.0,
"BF": 39.0,
"Pitches": 157.0
},
"per_game": {
"IP": 2.0,
"ER": 0.4,
"R": 0.4,
"H": 1.2,
"BB": 1.0,
"SO": 2.2,
"HR": 0.2,
"BF": 7.8,
"Pitches": 31.4
},
"rates": {
"ERA": 1.9286,
"WHIP": 1.1786,
"ER_per_IP": 0.21429,
"H_per_IP": 0.64286,
"BB_per_IP": 0.53571,
"SO_per_IP": 1.17857,
"HR_per_IP": 0.10714
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 19.2,
"ER": 6.0,
"R": 6.0,
"H": 12.0,
"BB": 13.0,
"SO": 19.0,
"HR": 3.0,
"BF": 82.0,
"Pitches": 338.0
},
"per_game": {
"IP": 2.0,
"ER": 0.6,
"R": 0.6,
"H": 1.2,
"BB": 1.3,
"SO": 1.9,
"HR": 0.3,
"BF": 8.2,
"Pitches": 33.8
},
"rates": {
"ERA": 2.7458,
"WHIP": 1.2712,
"ER_per_IP": 0.30508,
"H_per_IP": 0.61017,
"BB_per_IP": 0.66102,
"SO_per_IP": 0.9661,
"HR_per_IP": 0.15254
}
},
"season": {
"games": 49,
"totals": {
"IP": 82.1,
"ER": 27.0,
"R": 29.0,
"H": 53.0,
"BB": 33.0,
"SO": 86.0,
"HR": 12.0,
"BF": 333.0,
"Pitches": 1343.0
},
"per_game": {
"IP": 1.2,
"ER": 0.551,
"R": 0.5918,
"H": 1.0816,
"BB": 0.6735,
"SO": 1.7551,
"HR": 0.2449,
"BF": 6.7959,
"Pitches": 27.4082
},
"rates": {
"ERA": 2.9514,
"WHIP": 1.0445,
"ER_per_IP": 0.32794,
"H_per_IP": 0.64372,
"BB_per_IP": 0.40081,
"SO_per_IP": 1.04453,
"HR_per_IP": 0.14575
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 2.2,
"predicted_ER": 0.906,
"predicted_H": 1.989,
"predicted_BB": 1.429,
"predicted_SO": 2.917,
"predicted_HR": 0.377,
"predicted_ERA": 2.9194,
"predicted_WHIP": 1.2241
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4472,
"form_weight": 0.5528,
"form_reliability": 0.7699,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.734,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7699,
"prior_weight": 0.2301
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 2.2,
"final": 4.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 0.0,
"form": 0.906,
"final": 0.5008,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 1.989,
"final": 1.5467,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 5.0,
"form": 1.429,
"final": 3.026,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 2.917,
"final": 5.1902,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.377,
"final": 0.2084,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.9194,
"final": 2.9194,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2241,
"final": 1.2241,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 19.2,
"ER": 6,
"H": 12,
"BB": 13,
"SO": 19,
"HR": 3,
"ERA": 2.7457627118644066,
"WHIP": 1.271186440677966,
"K9": 8.694915254237287,
"HR9": 1.3728813559322033,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.8722894964650707,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 0.0,
"predicted_H": 1.0,
"predicted_BB": 5.0,
"predicted_SO": 8.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.734,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7699,
"prior_weight": 0.2301
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 0,
"predicted_H": 1,
"predicted_BB": 5,
"predicted_SO": 8,
"predicted_HR": 0
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 0,
"predicted_H": 1,
"predicted_BB": 5,
"predicted_SO": 8,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669199",
"player_name": "Lake Bachar",
"position": "Starter",
"team": "PIT",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 0.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 0.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 0.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 0.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 0.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PIT",
"games": 155,
"wins": 78,
"losses": 77,
"win_pct": 0.5032,
"runs_scored": 744.0,
"runs_allowed": 716.0,
"run_differential": 28.0,
"run_differential_per_game": 0.1806,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.6194,
"offense_index": 1.0675,
"defense_index": 0.9734,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.5,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.0598
},
"opponent": {
"team": "KC",
"games": 155,
"wins": 67,
"losses": 88,
"win_pct": 0.4323,
"runs_scored": 653.0,
"runs_allowed": 754.0,
"run_differential": -101.0,
"run_differential_per_game": -0.6516,
"avg_runs_scored": 4.2129,
"avg_runs_allowed": 4.8645,
"offense_index": 0.9369,
"defense_index": 0.9243,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.2,
"avg_runs_allowed": 4.4,
"run_differential": -12.0
},
"available": true,
"quality_score": -0.2072
},
"edges": {
"quality_edge": 0.267,
"offense_edge": 0.0675,
"opponent_offense_edge": -0.0631,
"defense_strength": -0.0266,
"opponent_defense_weakness": 0.0757,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0124,
"run_prevention": 0.9792,
"strikeout": 1.0131
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669199",
"profile": {
"available": true,
"pitcher_id": "669199",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 325.0,
"k_percent": 25.0,
"bb_percent": 10.4,
"woba": 0.288,
"xwoba": 0.292,
"sweet_spot_percent": 30.3,
"barrel_batted_rate": 8.1,
"hard_hit_percent": 34.1,
"avg_best_speed": 78.9897,
"avg_hyper_speed": 93.6055,
"whiff_percent": 29.9,
"swing_percent": 45.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3698,
"command_and_miss": 0.3729,
"regression_edge": -0.1143,
"xwoba_edge": 0.5643,
"barrel_edge": -0.2,
"hard_hit_edge": 0.5429,
"whiff_edge": 0.7,
"bb_edge": -0.325,
"pitch_design_score": -0.0043
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669199",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 27,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 27,
"pitch_usage": 0.0,
"release_speed": 89.77481249512137,
"release_spin_rate": 2697.8801239344625,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 27,
"pitch_usage": 0.0,
"release_speed": 89.77481249512137,
"release_spin_rate": 2697.8801239344625,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 89.7748,
"release_spin_rate": 2697.8801,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0043,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0305,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.2923,
"sample_weight": 1.0,
"run_prevention_factor": 0.9752,
"strikeout_factor": 1.0451,
"walk_factor": 1.026,
"homer_factor": 0.9774,
"woba_minus_xwoba": -0.004,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669199",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9752,
"adjusted": 1
},
"predicted_H": {
"original": 2.0,
"factor": 0.9752,
"adjusted": 2
},
"predicted_BB": {
"original": 3.0,
"factor": 1.026,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9774,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0451,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 1,
"predicted_R": 0,
"predicted_ER": 0,
"predicted_BB": 5,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 98,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -12 outs from the projected workload."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -5."
}
],
"provenance": {
"prediction": "output/games/20260920_KC@PIT.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_MIA@SD | away | Sandy Alcantara | Sandy Alcantara | True | 5.1 | 6.0 | 2 | 6 | 4 | -2 | 7/8 | 2/1 | 4/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.8446601941747574,
"WHIP": 1.2281553398058251,
"IP": 206.0,
"games_started": null,
"games_pitched": 33,
"role_avg_IP": 6.406,
"recent_avg_IP": 5.667,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0208,
"sample_weight": 1.0,
"run_prevention_factor": 0.9982,
"strikeout_factor": 0.9503,
"walk_factor": 0.952,
"homer_factor": 0.959,
"regression_flag": "neutral",
"k_percent": 17.3,
"bb_percent": 6.7,
"woba": 0.305,
"xwoba": 0.305,
"barrel_percent": 5.8,
"hard_hit_percent": 36.1,
"whiff_percent": 21.0
},
"espn_rank": {
"rank": 37,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 33.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8684,
"prior_weight": 0.1316
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "645261",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 33,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.1,
"ER": 19.0,
"R": 19.0,
"H": 28.0,
"BB": 9.0,
"SO": 12.0,
"HR": 5.0,
"BF": 104.0,
"Pitches": 405.0
},
"per_game": {
"IP": 4.1,
"ER": 3.8,
"R": 3.8,
"H": 5.6,
"BB": 1.8,
"SO": 2.4,
"HR": 1.0,
"BF": 20.8,
"Pitches": 81.0
},
"rates": {
"ERA": 7.6567,
"WHIP": 1.6567,
"ER_per_IP": 0.85075,
"H_per_IP": 1.25373,
"BB_per_IP": 0.40299,
"SO_per_IP": 0.53731,
"HR_per_IP": 0.22388
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.1,
"ER": 24.0,
"R": 24.0,
"H": 52.0,
"BB": 19.0,
"SO": 34.0,
"HR": 6.0,
"BF": 236.0,
"Pitches": 917.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.4,
"H": 5.2,
"BB": 1.9,
"SO": 3.4,
"HR": 0.6,
"BF": 23.6,
"Pitches": 91.7
},
"rates": {
"ERA": 3.9036,
"WHIP": 1.2831,
"ER_per_IP": 0.43373,
"H_per_IP": 0.93976,
"BB_per_IP": 0.34337,
"SO_per_IP": 0.61446,
"HR_per_IP": 0.10843
}
},
"season": {
"games": 33,
"totals": {
"IP": 206.0,
"ER": 88.0,
"R": 93.0,
"H": 195.0,
"BB": 58.0,
"SO": 149.0,
"HR": 23.0,
"BF": 861.0,
"Pitches": 3174.0
},
"per_game": {
"IP": 6.1,
"ER": 2.6667,
"R": 2.8182,
"H": 5.9091,
"BB": 1.7576,
"SO": 4.5152,
"HR": 0.697,
"BF": 26.0909,
"Pitches": 96.1818
},
"rates": {
"ERA": 3.8447,
"WHIP": 1.2282,
"ER_per_IP": 0.42718,
"H_per_IP": 0.9466,
"BB_per_IP": 0.28155,
"SO_per_IP": 0.7233,
"HR_per_IP": 0.11165
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 3.213,
"predicted_H": 5.672,
"predicted_BB": 1.911,
"predicted_SO": 3.424,
"predicted_HR": 0.846,
"predicted_ERA": 5.4508,
"predicted_WHIP": 1.4294
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4056,
"form_weight": 0.5944,
"form_reliability": 0.8684,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 33.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8684,
"prior_weight": 0.1316
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 5.1,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 6.0,
"form": 3.213,
"final": 4.3434,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 5.672,
"final": 6.2106,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.911,
"final": 1.9471,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 3.424,
"final": 2.8464,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.846,
"final": 0.5029,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.4508,
"final": 5.4508,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4294,
"final": 1.4294,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.1,
"ER": 24,
"H": 52,
"BB": 19,
"SO": 34,
"HR": 6,
"ERA": 3.9036144578313254,
"WHIP": 1.2831325301204821,
"K9": 5.530120481927711,
"HR9": 0.9759036144578314,
"games_pitched": 10,
"quality_starts": 5,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-16T00:00:00"
},
"recent_form_boost": 0.934043671769927,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 6.0,
"predicted_H": 7.0,
"predicted_BB": 2.0,
"predicted_SO": 2.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 33.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8684,
"prior_weight": 0.1316
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.1,
"predicted_ER": 6,
"predicted_H": 7,
"predicted_BB": 2,
"predicted_SO": 2,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "645261",
"player_name": "Sandy Alcantara",
"position": "Starter",
"team": "MIA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 6.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 6.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 5.1,
"delta": -0.9,
"percent_delta": -0.15,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 6.0,
"after": 5.1,
"delta": -0.9,
"percent_delta": -0.15,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 6.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_R": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.1,
"after": 5.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 5.1,
"delta": -0.9,
"percent_delta": -0.15,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 6.0,
"after": 5.1,
"delta": -0.9,
"percent_delta": -0.15,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIA",
"games": 155,
"wins": 76,
"losses": 79,
"win_pct": 0.4903,
"runs_scored": 689.0,
"runs_allowed": 688.0,
"run_differential": 1.0,
"run_differential_per_game": 0.0065,
"avg_runs_scored": 4.4452,
"avg_runs_allowed": 4.4387,
"offense_index": 0.9901,
"defense_index": 1.0115,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 6.3,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.0424
},
"opponent": {
"team": "SD",
"games": 155,
"wins": 86,
"losses": 69,
"win_pct": 0.5548,
"runs_scored": 683.0,
"runs_allowed": 646.0,
"run_differential": 37.0,
"run_differential_per_game": 0.2387,
"avg_runs_scored": 4.4065,
"avg_runs_allowed": 4.1677,
"offense_index": 0.9815,
"defense_index": 1.0772,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 9,
"losses": 1,
"win_pct": 0.9,
"avg_runs_scored": 7.3,
"avg_runs_allowed": 4.6,
"run_differential": 27.0
},
"available": true,
"quality_score": 0.2158
},
"edges": {
"quality_edge": -0.2582,
"offense_edge": -0.0099,
"opponent_offense_edge": -0.0185,
"defense_strength": 0.0115,
"opponent_defense_weakness": -0.0772,
"recent_win_pct_edge": -0.5
},
"player_factors": {
"ip": 0.9908,
"run_prevention": 1.0088,
"strikeout": 0.9937
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "645261",
"profile": {
"available": true,
"pitcher_id": "645261",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 853.0,
"k_percent": 17.3,
"bb_percent": 6.7,
"woba": 0.305,
"xwoba": 0.305,
"sweet_spot_percent": 33.0,
"barrel_batted_rate": 5.8,
"hard_hit_percent": 36.1,
"avg_best_speed": 77.9205,
"avg_hyper_speed": 93.7234,
"whiff_percent": 21.0,
"swing_percent": 50.5
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1955,
"command_and_miss": -0.3821,
"regression_edge": 0.0,
"xwoba_edge": 0.1929,
"barrel_edge": 0.3111,
"hard_hit_edge": 0.2571,
"whiff_edge": -0.5714,
"bb_edge": 0.6,
"pitch_design_score": 0.1334
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "645261",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 98,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 98,
"pitch_usage": 0.0,
"release_speed": 92.2337746645985,
"release_spin_rate": 2238.9156209064117,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 98,
"pitch_usage": 0.0,
"release_speed": 92.2337746645985,
"release_spin_rate": 2238.9156209064117,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 92.2338,
"release_spin_rate": 2238.9156,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1334,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.9531,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.0208,
"sample_weight": 1.0,
"run_prevention_factor": 0.9982,
"strikeout_factor": 0.9503,
"walk_factor": 0.952,
"homer_factor": 0.959,
"woba_minus_xwoba": 0.0,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "645261",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 0.9982,
"adjusted": 4
},
"predicted_H": {
"original": 7.0,
"factor": 0.9982,
"adjusted": 7
},
"predicted_BB": {
"original": 2.0,
"factor": 0.952,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.959,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9503,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 7,
"predicted_R": 6,
"predicted_ER": 6,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"Pitches": 103,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260920_MIA@SD.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_MIA@SD | home | Walker Buehler | Walker Buehler | True | 4.2 | 6.2 | 6 | 2 | 3 | 1 | 4/3 | 0/2 | 6/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.583720930232558,
"WHIP": 1.3674418604651162,
"IP": 143.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 4.778,
"recent_avg_IP": 4.6,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1676,
"sample_weight": 1.0,
"run_prevention_factor": 1.0142,
"strikeout_factor": 0.9583,
"walk_factor": 0.996,
"homer_factor": 1.0254,
"regression_flag": "neutral",
"k_percent": 20.0,
"bb_percent": 8.9,
"woba": 0.332,
"xwoba": 0.318,
"barrel_percent": 8.2,
"hard_hit_percent": 38.3,
"whiff_percent": 19.7
},
"espn_rank": {
"rank": 209,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "621111",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.0,
"ER": 9.0,
"R": 9.0,
"H": 24.0,
"BB": 5.0,
"SO": 18.0,
"HR": 6.0,
"BF": 91.0,
"Pitches": 385.0
},
"per_game": {
"IP": 4.2,
"ER": 1.8,
"R": 1.8,
"H": 4.8,
"BB": 1.0,
"SO": 3.6,
"HR": 1.2,
"BF": 18.2,
"Pitches": 77.0
},
"rates": {
"ERA": 3.5217,
"WHIP": 1.2609,
"ER_per_IP": 0.3913,
"H_per_IP": 1.04348,
"BB_per_IP": 0.21739,
"SO_per_IP": 0.78261,
"HR_per_IP": 0.26087
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.2,
"ER": 18.0,
"R": 19.0,
"H": 47.0,
"BB": 14.0,
"SO": 38.0,
"HR": 8.0,
"BF": 197.0,
"Pitches": 816.0
},
"per_game": {
"IP": 5.0,
"ER": 1.8,
"R": 1.9,
"H": 4.7,
"BB": 1.4,
"SO": 3.8,
"HR": 0.8,
"BF": 19.7,
"Pitches": 81.6
},
"rates": {
"ERA": 3.3288,
"WHIP": 1.2534,
"ER_per_IP": 0.36986,
"H_per_IP": 0.96575,
"BB_per_IP": 0.28767,
"SO_per_IP": 0.78082,
"HR_per_IP": 0.16438
}
},
"season": {
"games": 30,
"totals": {
"IP": 143.1,
"ER": 73.0,
"R": 74.0,
"H": 142.0,
"BB": 54.0,
"SO": 122.0,
"HR": 20.0,
"BF": 609.0,
"Pitches": 2446.0
},
"per_game": {
"IP": 4.2,
"ER": 2.4333,
"R": 2.4667,
"H": 4.7333,
"BB": 1.8,
"SO": 4.0667,
"HR": 0.6667,
"BF": 20.3,
"Pitches": 81.5333
},
"rates": {
"ERA": 4.5837,
"WHIP": 1.3674,
"ER_per_IP": 0.5093,
"H_per_IP": 0.9907,
"BB_per_IP": 0.37674,
"SO_per_IP": 0.85116,
"HR_per_IP": 0.13953
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.012,
"predicted_H": 4.778,
"predicted_BB": 1.375,
"predicted_SO": 3.888,
"predicted_HR": 0.931,
"predicted_ERA": 3.799,
"predicted_WHIP": 1.2907
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.012,
"final": 2.0071,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.778,
"final": 4.4587,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.375,
"final": 0.8107,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 3.888,
"final": 4.7547,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.931,
"final": 0.9593,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.799,
"final": 3.799,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2907,
"final": 1.2907,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 48.2,
"ER": 18,
"H": 47,
"BB": 14,
"SO": 38,
"HR": 8,
"ERA": 3.3287671232876708,
"WHIP": 1.2534246575342465,
"K9": 7.027397260273972,
"HR9": 1.4794520547945205,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.8686306498191099,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 0.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "621111",
"player_name": "Walker Buehler",
"position": "Starter",
"team": "SD",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_R": 2.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SD",
"games": 155,
"wins": 86,
"losses": 69,
"win_pct": 0.5548,
"runs_scored": 683.0,
"runs_allowed": 646.0,
"run_differential": 37.0,
"run_differential_per_game": 0.2387,
"avg_runs_scored": 4.4065,
"avg_runs_allowed": 4.1677,
"offense_index": 0.9815,
"defense_index": 1.0772,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 9,
"losses": 1,
"win_pct": 0.9,
"avg_runs_scored": 7.3,
"avg_runs_allowed": 4.6,
"run_differential": 27.0
},
"available": true,
"quality_score": 0.2158
},
"opponent": {
"team": "MIA",
"games": 155,
"wins": 76,
"losses": 79,
"win_pct": 0.4903,
"runs_scored": 689.0,
"runs_allowed": 688.0,
"run_differential": 1.0,
"run_differential_per_game": 0.0065,
"avg_runs_scored": 4.4452,
"avg_runs_allowed": 4.4387,
"offense_index": 0.9901,
"defense_index": 1.0115,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 6.3,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.0424
},
"edges": {
"quality_edge": 0.2582,
"offense_edge": -0.0185,
"opponent_offense_edge": -0.0099,
"defense_strength": 0.0772,
"opponent_defense_weakness": -0.0115,
"recent_win_pct_edge": 0.5
},
"player_factors": {
"ip": 1.013,
"run_prevention": 0.9778,
"strikeout": 1.0085
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "621111",
"profile": {
"available": true,
"pitcher_id": "621111",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 583.0,
"k_percent": 20.0,
"bb_percent": 8.9,
"woba": 0.332,
"xwoba": 0.318,
"sweet_spot_percent": 31.6,
"barrel_batted_rate": 8.2,
"hard_hit_percent": 38.3,
"avg_best_speed": 78.8929,
"avg_hyper_speed": 94.0584,
"whiff_percent": 19.7,
"swing_percent": 45.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.1926,
"command_and_miss": -0.3836,
"regression_edge": 0.4,
"xwoba_edge": -0.1786,
"barrel_edge": -0.2222,
"hard_hit_edge": -0.0571,
"whiff_edge": -0.7571,
"bb_edge": 0.05,
"pitch_design_score": -0.0005
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "621111",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 75,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 75,
"pitch_usage": 0.0,
"release_speed": 89.84218390169383,
"release_spin_rate": 2199.080983688629,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 75,
"pitch_usage": 0.0,
"release_speed": 89.84218390169383,
"release_spin_rate": 2199.080983688629,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 89.8422,
"release_spin_rate": 2199.081,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0005,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0035,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.1676,
"sample_weight": 1.0,
"run_prevention_factor": 1.0142,
"strikeout_factor": 0.9583,
"walk_factor": 0.996,
"homer_factor": 1.0254,
"woba_minus_xwoba": 0.014,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "621111",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0142,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0142,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.996,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0254,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9583,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 18,
"Pitches": 78,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +6 outs from the projected workload."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260920_MIA@SD.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_MIL@BAL | away | Jacob Misiorowski | Jacob Misiorowski | True | 6.0 | 3.0 | -9 | 1 | 0 | -1 | 1/1 | 3/0 | 8/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 1.8937875751503004,
"WHIP": 0.8116232464929859,
"IP": 166.1,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.94,
"recent_avg_IP": 5.467,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 1.3866,
"sample_weight": 1.0,
"run_prevention_factor": 0.8821,
"strikeout_factor": 1.16,
"walk_factor": 0.95,
"homer_factor": 0.8366,
"regression_flag": "neutral",
"k_percent": 38.2,
"bb_percent": 6.6,
"woba": 0.219,
"xwoba": 0.224,
"barrel_percent": 3.8,
"hard_hit_percent": 33.0,
"whiff_percent": 37.3
},
"espn_rank": {
"rank": 5,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 6.0,
"season_IP": 166.1,
"season_ERA": 1.894,
"season_WHIP": 0.812,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "694819",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.1,
"ER": 8.0,
"R": 8.0,
"H": 20.0,
"BB": 11.0,
"SO": 33.0,
"HR": 1.0,
"BF": 109.0,
"Pitches": 452.0
},
"per_game": {
"IP": 5.1,
"ER": 1.6,
"R": 1.6,
"H": 4.0,
"BB": 2.2,
"SO": 6.6,
"HR": 0.2,
"BF": 21.8,
"Pitches": 90.4
},
"rates": {
"ERA": 2.6341,
"WHIP": 1.1341,
"ER_per_IP": 0.29268,
"H_per_IP": 0.73171,
"BB_per_IP": 0.40244,
"SO_per_IP": 1.20732,
"HR_per_IP": 0.03659
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.1,
"ER": 15.0,
"R": 16.0,
"H": 36.0,
"BB": 15.0,
"SO": 76.0,
"HR": 5.0,
"BF": 214.0,
"Pitches": 875.0
},
"per_game": {
"IP": 5.2,
"ER": 1.5,
"R": 1.6,
"H": 3.6,
"BB": 1.5,
"SO": 7.6,
"HR": 0.5,
"BF": 21.4,
"Pitches": 87.5
},
"rates": {
"ERA": 2.4398,
"WHIP": 0.9217,
"ER_per_IP": 0.27108,
"H_per_IP": 0.6506,
"BB_per_IP": 0.27108,
"SO_per_IP": 1.37349,
"HR_per_IP": 0.09036
}
},
"season": {
"games": 28,
"totals": {
"IP": 166.1,
"ER": 35.0,
"R": 43.0,
"H": 93.0,
"BB": 42.0,
"SO": 243.0,
"HR": 14.0,
"BF": 636.0,
"Pitches": 2535.0
},
"per_game": {
"IP": 6.0,
"ER": 1.25,
"R": 1.5357,
"H": 3.3214,
"BB": 1.5,
"SO": 8.6786,
"HR": 0.5,
"BF": 22.7143,
"Pitches": 90.5357
},
"rates": {
"ERA": 1.8938,
"WHIP": 0.8116,
"ER_per_IP": 0.21042,
"H_per_IP": 0.55912,
"BB_per_IP": 0.25251,
"SO_per_IP": 1.46092,
"HR_per_IP": 0.08417
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 1.724,
"predicted_H": 4.044,
"predicted_BB": 1.885,
"predicted_SO": 7.106,
"predicted_HR": 0.439,
"predicted_ERA": 2.7476,
"predicted_WHIP": 1.0501
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.414,
"form_weight": 0.586,
"form_reliability": 0.8485,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.724,
"final": 1.4243,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 4.044,
"final": 2.7838,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.885,
"final": 2.3466,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 7.106,
"final": 7.4761,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.439,
"final": 0.2573,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.7476,
"final": 2.7476,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0501,
"final": 1.0501,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.1,
"ER": 15,
"H": 36,
"BB": 15,
"SO": 76,
"HR": 5,
"ERA": 2.4397590361445785,
"WHIP": 0.9216867469879518,
"K9": 12.361445783132531,
"HR9": 0.8132530120481929,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.7603237922518546,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_BB": 3.0,
"predicted_SO": 8.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 1,
"predicted_H": 1,
"predicted_BB": 3,
"predicted_SO": 8,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "694819",
"player_name": "Jacob Misiorowski",
"position": "Starter",
"team": "MIL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 1.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIL",
"games": 155,
"wins": 97,
"losses": 58,
"win_pct": 0.6258,
"runs_scored": 799.0,
"runs_allowed": 600.0,
"run_differential": 199.0,
"run_differential_per_game": 1.2839,
"avg_runs_scored": 5.1548,
"avg_runs_allowed": 3.871,
"offense_index": 1.1454,
"defense_index": 1.1627,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.9,
"avg_runs_allowed": 3.9,
"run_differential": 30.0
},
"available": true,
"quality_score": 0.3688
},
"opponent": {
"team": "BAL",
"games": 155,
"wins": 75,
"losses": 80,
"win_pct": 0.4839,
"runs_scored": 693.0,
"runs_allowed": 721.0,
"run_differential": -28.0,
"run_differential_per_game": -0.1806,
"avg_runs_scored": 4.471,
"avg_runs_allowed": 4.6516,
"offense_index": 0.9934,
"defense_index": 0.9675,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.7,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.0358
},
"edges": {
"quality_edge": 0.4046,
"offense_edge": 0.1454,
"opponent_offense_edge": -0.0066,
"defense_strength": 0.1627,
"opponent_defense_weakness": 0.0325,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0213,
"run_prevention": 0.9624,
"strikeout": 1.0127
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "694819",
"profile": {
"available": true,
"pitcher_id": "694819",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 614.0,
"k_percent": 38.2,
"bb_percent": 6.6,
"woba": 0.219,
"xwoba": 0.224,
"sweet_spot_percent": 33.6,
"barrel_batted_rate": 3.8,
"hard_hit_percent": 33.0,
"avg_best_speed": 76.5024,
"avg_hyper_speed": 92.9814,
"whiff_percent": 37.3,
"swing_percent": 51.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 1.6344,
"command_and_miss": 1.7814,
"regression_edge": -0.1429,
"xwoba_edge": 2.5,
"barrel_edge": 0.7556,
"hard_hit_edge": 0.7,
"whiff_edge": 1.7571,
"bb_edge": 0.625,
"pitch_design_score": 0.28
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "694819",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 93,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 97.5350871630707,
"release_spin_rate": 2568.640260744372,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 97.5350871630707,
"release_spin_rate": 2568.640260744372,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 97.5351,
"release_spin_rate": 2568.6403,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.28,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 2.0,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 1.3866,
"sample_weight": 1.0,
"run_prevention_factor": 0.8821,
"strikeout_factor": 1.16,
"walk_factor": 0.95,
"homer_factor": 0.8366,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "694819",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.8821,
"adjusted": 1
},
"predicted_H": {
"original": 4.0,
"factor": 0.8821,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.95,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.8366,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.16,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 1,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 3,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 101,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -9 outs from the projected workload."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260920_MIL@BAL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_MIL@BAL | home | Brandon Young | Brandon Young | True | 5.2 | 6.0 | 1 | 3 | 2 | -1 | 6/3 | 1/3 | 7/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6453089244851262,
"WHIP": 1.3729977116704806,
"IP": 145.2,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 5.603,
"recent_avg_IP": 5.6,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1823,
"sample_weight": 1.0,
"run_prevention_factor": 1.0155,
"strikeout_factor": 0.972,
"walk_factor": 0.992,
"homer_factor": 1.0088,
"regression_flag": "neutral",
"k_percent": 18.8,
"bb_percent": 8.7,
"woba": 0.328,
"xwoba": 0.323,
"barrel_percent": 6.7,
"hard_hit_percent": 39.3,
"whiff_percent": 23.3
},
"espn_rank": {
"rank": 86,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "687064",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.0,
"ER": 13.0,
"R": 13.0,
"H": 28.0,
"BB": 13.0,
"SO": 22.0,
"HR": 6.0,
"BF": 122.0,
"Pitches": 465.0
},
"per_game": {
"IP": 5.2,
"ER": 2.6,
"R": 2.6,
"H": 5.6,
"BB": 2.6,
"SO": 4.4,
"HR": 1.2,
"BF": 24.4,
"Pitches": 93.0
},
"rates": {
"ERA": 4.1786,
"WHIP": 1.4643,
"ER_per_IP": 0.46429,
"H_per_IP": 1.0,
"BB_per_IP": 0.46429,
"SO_per_IP": 0.78571,
"HR_per_IP": 0.21429
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.1,
"ER": 26.0,
"R": 27.0,
"H": 57.0,
"BB": 23.0,
"SO": 44.0,
"HR": 12.0,
"BF": 239.0,
"Pitches": 937.0
},
"per_game": {
"IP": 5.1,
"ER": 2.6,
"R": 2.7,
"H": 5.7,
"BB": 2.3,
"SO": 4.4,
"HR": 1.2,
"BF": 23.9,
"Pitches": 93.7
},
"rates": {
"ERA": 4.3067,
"WHIP": 1.4724,
"ER_per_IP": 0.47853,
"H_per_IP": 1.04908,
"BB_per_IP": 0.42331,
"SO_per_IP": 0.80982,
"HR_per_IP": 0.22086
}
},
"season": {
"games": 26,
"totals": {
"IP": 145.2,
"ER": 59.0,
"R": 68.0,
"H": 145.0,
"BB": 55.0,
"SO": 118.0,
"HR": 21.0,
"BF": 629.0,
"Pitches": 2364.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2692,
"R": 2.6154,
"H": 5.5769,
"BB": 2.1154,
"SO": 4.5385,
"HR": 0.8077,
"BF": 24.1923,
"Pitches": 90.9231
},
"rates": {
"ERA": 3.6453,
"WHIP": 1.373,
"ER_per_IP": 0.40503,
"H_per_IP": 0.99542,
"BB_per_IP": 0.37757,
"SO_per_IP": 0.81007,
"HR_per_IP": 0.14416
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.595,
"predicted_H": 5.629,
"predicted_BB": 2.358,
"predicted_SO": 4.572,
"predicted_HR": 1.08,
"predicted_ERA": 4.1936,
"predicted_WHIP": 1.4341
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4181,
"form_weight": 0.5819,
"form_reliability": 0.8387,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.595,
"final": 2.7644,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.629,
"final": 5.7841,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.358,
"final": 1.7902,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.572,
"final": 5.5873,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.08,
"final": 0.6284,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1936,
"final": 4.1936,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4341,
"final": 1.4341,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 54.1,
"ER": 26,
"H": 57,
"BB": 23,
"SO": 44,
"HR": 12,
"ERA": 4.306748466257669,
"WHIP": 1.4723926380368098,
"K9": 7.288343558282208,
"HR9": 1.987730061349693,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 0.9841277504157987,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "687064",
"player_name": "Brandon Young",
"position": "Starter",
"team": "BAL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BAL",
"games": 155,
"wins": 75,
"losses": 80,
"win_pct": 0.4839,
"runs_scored": 693.0,
"runs_allowed": 721.0,
"run_differential": -28.0,
"run_differential_per_game": -0.1806,
"avg_runs_scored": 4.471,
"avg_runs_allowed": 4.6516,
"offense_index": 0.9934,
"defense_index": 0.9675,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.7,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.0358
},
"opponent": {
"team": "MIL",
"games": 155,
"wins": 97,
"losses": 58,
"win_pct": 0.6258,
"runs_scored": 799.0,
"runs_allowed": 600.0,
"run_differential": 199.0,
"run_differential_per_game": 1.2839,
"avg_runs_scored": 5.1548,
"avg_runs_allowed": 3.871,
"offense_index": 1.1454,
"defense_index": 1.1627,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.9,
"avg_runs_allowed": 3.9,
"run_differential": 30.0
},
"available": true,
"quality_score": 0.3688
},
"edges": {
"quality_edge": -0.4046,
"offense_edge": -0.0066,
"opponent_offense_edge": 0.1454,
"defense_strength": -0.0325,
"opponent_defense_weakness": -0.1627,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.977,
"run_prevention": 1.0467,
"strikeout": 0.9762
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "687064",
"profile": {
"available": true,
"pitcher_id": "687064",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 600.0,
"k_percent": 18.8,
"bb_percent": 8.7,
"woba": 0.328,
"xwoba": 0.323,
"sweet_spot_percent": 34.2,
"barrel_batted_rate": 6.7,
"hard_hit_percent": 39.3,
"avg_best_speed": 78.6815,
"avg_hyper_speed": 94.1795,
"whiff_percent": 23.3,
"swing_percent": 49.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2153,
"command_and_miss": -0.2707,
"regression_edge": 0.1429,
"xwoba_edge": -0.3214,
"barrel_edge": 0.1111,
"hard_hit_edge": -0.2,
"whiff_edge": -0.2429,
"bb_edge": 0.1,
"pitch_design_score": -0.07
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687064",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 88,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 88.60132582678195,
"release_spin_rate": 2064.261218713588,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 88.60132582678195,
"release_spin_rate": 2064.261218713588,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 88.6013,
"release_spin_rate": 2064.2612,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.07,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4999,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.1823,
"sample_weight": 1.0,
"run_prevention_factor": 1.0155,
"strikeout_factor": 0.972,
"walk_factor": 0.992,
"homer_factor": 1.0088,
"woba_minus_xwoba": 0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "687064",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0155,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0155,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.992,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0088,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.972,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 105,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260920_MIL@BAL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_MIN@LAA | away | Dean Kremer | Dean Kremer | True | 4.2 | 6.0 | 4 | 2 | 0 | -2 | 2/1 | 2/3 | 3/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.353448275862069,
"WHIP": 1.2413793103448276,
"IP": 77.1,
"games_started": null,
"games_pitched": 15,
"role_avg_IP": 5.156,
"recent_avg_IP": 4.8,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1092,
"sample_weight": 1.0,
"run_prevention_factor": 1.0093,
"strikeout_factor": 1.0257,
"walk_factor": 0.982,
"homer_factor": 1.0426,
"regression_flag": "neutral",
"k_percent": 23.2,
"bb_percent": 8.2,
"woba": 0.336,
"xwoba": 0.327,
"barrel_percent": 9.6,
"hard_hit_percent": 35.6,
"whiff_percent": 28.3
},
"espn_rank": {
"rank": 538,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "665152",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 15,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.0,
"ER": 14.0,
"R": 15.0,
"H": 23.0,
"BB": 10.0,
"SO": 21.0,
"HR": 4.0,
"BF": 102.0,
"Pitches": 433.0
},
"per_game": {
"IP": 4.2,
"ER": 2.8,
"R": 3.0,
"H": 4.6,
"BB": 2.0,
"SO": 4.2,
"HR": 0.8,
"BF": 20.4,
"Pitches": 86.6
},
"rates": {
"ERA": 5.25,
"WHIP": 1.375,
"ER_per_IP": 0.58333,
"H_per_IP": 0.95833,
"BB_per_IP": 0.41667,
"SO_per_IP": 0.875,
"HR_per_IP": 0.16667
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.1,
"ER": 34.0,
"R": 35.0,
"H": 48.0,
"BB": 19.0,
"SO": 45.0,
"HR": 8.0,
"BF": 216.0,
"Pitches": 867.0
},
"per_game": {
"IP": 5.0,
"ER": 3.4,
"R": 3.5,
"H": 4.8,
"BB": 1.9,
"SO": 4.5,
"HR": 0.8,
"BF": 21.6,
"Pitches": 86.7
},
"rates": {
"ERA": 5.961,
"WHIP": 1.3052,
"ER_per_IP": 0.66234,
"H_per_IP": 0.93506,
"BB_per_IP": 0.37013,
"SO_per_IP": 0.87662,
"HR_per_IP": 0.15584
}
},
"season": {
"games": 15,
"totals": {
"IP": 77.1,
"ER": 46.0,
"R": 49.0,
"H": 70.0,
"BB": 26.0,
"SO": 74.0,
"HR": 17.0,
"BF": 319.0,
"Pitches": 1296.0
},
"per_game": {
"IP": 5.0,
"ER": 3.0667,
"R": 3.2667,
"H": 4.6667,
"BB": 1.7333,
"SO": 4.9333,
"HR": 1.1333,
"BF": 21.2667,
"Pitches": 86.4
},
"rates": {
"ERA": 5.3534,
"WHIP": 1.2414,
"ER_per_IP": 0.59483,
"H_per_IP": 0.90517,
"BB_per_IP": 0.33621,
"SO_per_IP": 0.9569,
"HR_per_IP": 0.21983
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.872,
"predicted_H": 4.644,
"predicted_BB": 1.868,
"predicted_SO": 4.412,
"predicted_HR": 0.819,
"predicted_ERA": 5.288,
"predicted_WHIP": 1.3323
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4556,
"form_weight": 0.5444,
"form_reliability": 0.75,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.872,
"final": 2.4747,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.644,
"final": 3.4393,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.868,
"final": 1.9281,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.412,
"final": 3.7687,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.819,
"final": 0.4458,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.288,
"final": 5.288,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3323,
"final": 1.3323,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 51.1,
"ER": 34,
"H": 48,
"BB": 19,
"SO": 45,
"HR": 8,
"ERA": 5.961038961038962,
"WHIP": 1.3051948051948052,
"K9": 7.88961038961039,
"HR9": 1.4025974025974026,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 1.166055485257644,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 2.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 2,
"predicted_H": 2,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "665152",
"player_name": "Dean Kremer",
"position": "Starter",
"team": "MIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 2.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIN",
"games": 155,
"wins": 72,
"losses": 83,
"win_pct": 0.4645,
"runs_scored": 704.0,
"runs_allowed": 776.0,
"run_differential": -72.0,
"run_differential_per_game": -0.4645,
"avg_runs_scored": 4.5419,
"avg_runs_allowed": 5.0065,
"offense_index": 1.0117,
"defense_index": 0.8968,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 5.5,
"run_differential": -24.0
},
"available": true,
"quality_score": -0.1571
},
"opponent": {
"team": "LAA",
"games": 155,
"wins": 60,
"losses": 95,
"win_pct": 0.3871,
"runs_scored": 625.0,
"runs_allowed": 704.0,
"run_differential": -79.0,
"run_differential_per_game": -0.5097,
"avg_runs_scored": 4.0323,
"avg_runs_allowed": 4.5419,
"offense_index": 0.8981,
"defense_index": 0.9885,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.4,
"run_differential": -4.0
},
"available": true,
"quality_score": -0.1584
},
"edges": {
"quality_edge": 0.0013,
"offense_edge": 0.0117,
"opponent_offense_edge": -0.1019,
"defense_strength": -0.1032,
"opponent_defense_weakness": 0.0115,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 1.001,
"run_prevention": 0.994,
"strikeout": 1.0082
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "665152",
"profile": {
"available": true,
"pitcher_id": "665152",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 300.0,
"k_percent": 23.2,
"bb_percent": 8.2,
"woba": 0.336,
"xwoba": 0.327,
"sweet_spot_percent": 37.9,
"barrel_batted_rate": 9.6,
"hard_hit_percent": 35.6,
"avg_best_speed": 76.6201,
"avg_hyper_speed": 93.6768,
"whiff_percent": 28.3,
"swing_percent": 45.8
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.3489,
"command_and_miss": 0.2871,
"regression_edge": 0.2571,
"xwoba_edge": -0.4357,
"barrel_edge": -0.5333,
"hard_hit_edge": 0.3286,
"whiff_edge": 0.4714,
"bb_edge": 0.225,
"pitch_design_score": -0.1771
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "665152",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 85,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 85,
"pitch_usage": 0.0,
"release_speed": 86.68922116656958,
"release_spin_rate": 2101.293582016223,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 85,
"pitch_usage": 0.0,
"release_speed": 86.68922116656958,
"release_spin_rate": 2101.293582016223,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 86.6892,
"release_spin_rate": 2101.2936,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1771,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.2647,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.1092,
"sample_weight": 1.0,
"run_prevention_factor": 1.0093,
"strikeout_factor": 1.0257,
"walk_factor": 0.982,
"homer_factor": 1.0426,
"woba_minus_xwoba": 0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "665152",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0093,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0093,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.982,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0426,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0257,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 20,
"Pitches": 85,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260920_MIN@LAA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_MIN@LAA | home | Ryan Johnson | Ryan Johnson | True | 5.2 | 4.2 | -3 | 1 | 3 | 2 | 2/7 | 1/0 | 5/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.881918819188192,
"WHIP": 1.3394833948339484,
"IP": 90.1,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 5.02,
"recent_avg_IP": 6.0,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.4207,
"sample_weight": 1.0,
"run_prevention_factor": 1.0358,
"strikeout_factor": 0.9669,
"walk_factor": 1.02,
"homer_factor": 1.0744,
"regression_flag": "neutral",
"k_percent": 18.0,
"bb_percent": 10.1,
"woba": 0.333,
"xwoba": 0.343,
"barrel_percent": 10.2,
"hard_hit_percent": 36.9,
"whiff_percent": 23.2
},
"espn_rank": {
"rank": 380,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "696270",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 6.0,
"R": 6.0,
"H": 18.0,
"BB": 10.0,
"SO": 23.0,
"HR": 2.0,
"BF": 117.0,
"Pitches": 458.0
},
"per_game": {
"IP": 6.0,
"ER": 1.2,
"R": 1.2,
"H": 3.6,
"BB": 2.0,
"SO": 4.6,
"HR": 0.4,
"BF": 23.4,
"Pitches": 91.6
},
"rates": {
"ERA": 1.8,
"WHIP": 0.9333,
"ER_per_IP": 0.2,
"H_per_IP": 0.6,
"BB_per_IP": 0.33333,
"SO_per_IP": 0.76667,
"HR_per_IP": 0.06667
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.0,
"ER": 23.0,
"R": 23.0,
"H": 43.0,
"BB": 23.0,
"SO": 40.0,
"HR": 8.0,
"BF": 219.0,
"Pitches": 862.0
},
"per_game": {
"IP": 5.1,
"ER": 2.3,
"R": 2.3,
"H": 4.3,
"BB": 2.3,
"SO": 4.0,
"HR": 0.8,
"BF": 21.9,
"Pitches": 86.2
},
"rates": {
"ERA": 3.9808,
"WHIP": 1.2692,
"ER_per_IP": 0.44231,
"H_per_IP": 0.82692,
"BB_per_IP": 0.44231,
"SO_per_IP": 0.76923,
"HR_per_IP": 0.15385
}
},
"season": {
"games": 20,
"totals": {
"IP": 90.1,
"ER": 49.0,
"R": 54.0,
"H": 82.0,
"BB": 39.0,
"SO": 70.0,
"HR": 18.0,
"BF": 388.0,
"Pitches": 1545.0
},
"per_game": {
"IP": 4.2,
"ER": 2.45,
"R": 2.7,
"H": 4.1,
"BB": 1.95,
"SO": 3.5,
"HR": 0.9,
"BF": 19.4,
"Pitches": 77.25
},
"rates": {
"ERA": 4.8819,
"WHIP": 1.3395,
"ER_per_IP": 0.54244,
"H_per_IP": 0.90775,
"BB_per_IP": 0.43173,
"SO_per_IP": 0.77491,
"HR_per_IP": 0.19926
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.129,
"predicted_H": 4.367,
"predicted_BB": 2.147,
"predicted_SO": 4.44,
"predicted_HR": 0.713,
"predicted_ERA": 3.4624,
"predicted_WHIP": 1.1772
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4345,
"form_weight": 0.5655,
"form_reliability": 0.8,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.129,
"final": 1.6384,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.367,
"final": 3.3385,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.147,
"final": 1.6486,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.44,
"final": 4.6833,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.713,
"final": 0.4032,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.4624,
"final": 3.4624,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1772,
"final": 1.1772,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 52.0,
"ER": 23,
"H": 43,
"BB": 23,
"SO": 40,
"HR": 8,
"ERA": 3.980769230769231,
"WHIP": 1.2692307692307692,
"K9": 6.923076923076923,
"HR9": 1.3846153846153846,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.9423760397031984,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "696270",
"player_name": "Ryan Johnson",
"position": "Starter",
"team": "LAA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAA",
"games": 155,
"wins": 60,
"losses": 95,
"win_pct": 0.3871,
"runs_scored": 625.0,
"runs_allowed": 704.0,
"run_differential": -79.0,
"run_differential_per_game": -0.5097,
"avg_runs_scored": 4.0323,
"avg_runs_allowed": 4.5419,
"offense_index": 0.8981,
"defense_index": 0.9885,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.4,
"run_differential": -4.0
},
"available": true,
"quality_score": -0.1584
},
"opponent": {
"team": "MIN",
"games": 155,
"wins": 72,
"losses": 83,
"win_pct": 0.4645,
"runs_scored": 704.0,
"runs_allowed": 776.0,
"run_differential": -72.0,
"run_differential_per_game": -0.4645,
"avg_runs_scored": 4.5419,
"avg_runs_allowed": 5.0065,
"offense_index": 1.0117,
"defense_index": 0.8968,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 5.5,
"run_differential": -24.0
},
"available": true,
"quality_score": -0.1571
},
"edges": {
"quality_edge": -0.0013,
"offense_edge": -0.1019,
"opponent_offense_edge": 0.0117,
"defense_strength": -0.0115,
"opponent_defense_weakness": 0.1032,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 0.9991,
"run_prevention": 1.0031,
"strikeout": 0.999
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "696270",
"profile": {
"available": true,
"pitcher_id": "696270",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 362.0,
"k_percent": 18.0,
"bb_percent": 10.1,
"woba": 0.333,
"xwoba": 0.343,
"sweet_spot_percent": 32.1,
"barrel_batted_rate": 10.2,
"hard_hit_percent": 36.9,
"avg_best_speed": 76.7986,
"avg_hyper_speed": 93.7435,
"whiff_percent": 23.2,
"swing_percent": 46.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.4937,
"command_and_miss": -0.3971,
"regression_edge": -0.2857,
"xwoba_edge": -0.8929,
"barrel_edge": -0.6667,
"hard_hit_edge": 0.1429,
"whiff_edge": -0.2571,
"bb_edge": -0.25,
"pitch_design_score": -0.1548
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "696270",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 90,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 90,
"pitch_usage": 0.0,
"release_speed": 87.08612475150535,
"release_spin_rate": 2294.5542445027313,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 90,
"pitch_usage": 0.0,
"release_speed": 87.08612475150535,
"release_spin_rate": 2294.5542445027313,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 87.0861,
"release_spin_rate": 2294.5542,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1548,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.1059,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.4207,
"sample_weight": 1.0,
"run_prevention_factor": 1.0358,
"strikeout_factor": 0.9669,
"walk_factor": 1.02,
"homer_factor": 1.0744,
"woba_minus_xwoba": -0.01,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "696270",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0358,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0358,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.02,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0744,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9669,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 2,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 20,
"Pitches": 81,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was +2."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 5",
"detail": "Actual minus predicted hits was +5."
}
],
"provenance": {
"prediction": "output/games/20260920_MIN@LAA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_NYY@ARI | away | Will Warren | Will Warren | True | 5.1 | 4.1 | -3 | 2 | 4 | 2 | 4/6 | 4/3 | 4/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.891891891891892,
"WHIP": 1.3581081081081081,
"IP": 148.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.179,
"recent_avg_IP": 5.533,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1744,
"sample_weight": 1.0,
"run_prevention_factor": 1.0148,
"strikeout_factor": 0.9886,
"walk_factor": 0.978,
"homer_factor": 1.053,
"regression_flag": "neutral",
"k_percent": 22.9,
"bb_percent": 8.0,
"woba": 0.331,
"xwoba": 0.322,
"barrel_percent": 7.6,
"hard_hit_percent": 44.4,
"whiff_percent": 22.1
},
"espn_rank": {
"rank": 186,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "701542",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 4.0,
"R": 7.0,
"H": 22.0,
"BB": 8.0,
"SO": 25.0,
"HR": 2.0,
"BF": 106.0,
"Pitches": 410.0
},
"per_game": {
"IP": 5.1,
"ER": 0.8,
"R": 1.4,
"H": 4.4,
"BB": 1.6,
"SO": 5.0,
"HR": 0.4,
"BF": 21.2,
"Pitches": 82.0
},
"rates": {
"ERA": 1.3846,
"WHIP": 1.1538,
"ER_per_IP": 0.15385,
"H_per_IP": 0.84615,
"BB_per_IP": 0.30769,
"SO_per_IP": 0.96154,
"HR_per_IP": 0.07692
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.0,
"ER": 20.0,
"R": 23.0,
"H": 48.0,
"BB": 17.0,
"SO": 50.0,
"HR": 7.0,
"BF": 208.0,
"Pitches": 828.0
},
"per_game": {
"IP": 5.0,
"ER": 2.0,
"R": 2.3,
"H": 4.8,
"BB": 1.7,
"SO": 5.0,
"HR": 0.7,
"BF": 20.8,
"Pitches": 82.8
},
"rates": {
"ERA": 3.6735,
"WHIP": 1.3265,
"ER_per_IP": 0.40816,
"H_per_IP": 0.97959,
"BB_per_IP": 0.34694,
"SO_per_IP": 1.02041,
"HR_per_IP": 0.14286
}
},
"season": {
"games": 30,
"totals": {
"IP": 148.0,
"ER": 64.0,
"R": 79.0,
"H": 150.0,
"BB": 51.0,
"SO": 147.0,
"HR": 21.0,
"BF": 641.0,
"Pitches": 2505.0
},
"per_game": {
"IP": 5.0,
"ER": 2.1333,
"R": 2.6333,
"H": 5.0,
"BB": 1.7,
"SO": 4.9,
"HR": 0.7,
"BF": 21.3667,
"Pitches": 83.5
},
"rates": {
"ERA": 3.8919,
"WHIP": 1.3581,
"ER_per_IP": 0.43243,
"H_per_IP": 1.01351,
"BB_per_IP": 0.34459,
"SO_per_IP": 0.99324,
"HR_per_IP": 0.14189
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 1.702,
"predicted_H": 4.836,
"predicted_BB": 1.737,
"predicted_SO": 5.077,
"predicted_HR": 0.612,
"predicted_ERA": 2.9596,
"predicted_WHIP": 1.2697
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.702,
"final": 1.8243,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.836,
"final": 4.4929,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.737,
"final": 2.6657,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 5.077,
"final": 4.635,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.612,
"final": 0.7712,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.9596,
"final": 2.9596,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2697,
"final": 1.2697,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 49.0,
"ER": 20,
"H": 48,
"BB": 17,
"SO": 50,
"HR": 7,
"ERA": 3.6734693877551026,
"WHIP": 1.326530612244898,
"K9": 9.183673469387756,
"HR9": 1.2857142857142858,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 0.9092373034394622,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 4.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "701542",
"player_name": "Will Warren",
"position": "Starter",
"team": "NYY",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.3333,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_R": 2.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYY",
"games": 154,
"wins": 89,
"losses": 65,
"win_pct": 0.5779,
"runs_scored": 709.0,
"runs_allowed": 568.0,
"run_differential": 141.0,
"run_differential_per_game": 0.9156,
"avg_runs_scored": 4.6039,
"avg_runs_allowed": 3.6883,
"offense_index": 1.0255,
"defense_index": 1.2172,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.8,
"avg_runs_allowed": 3.6,
"run_differential": 22.0
},
"available": true,
"quality_score": 0.2484
},
"opponent": {
"team": "ARI",
"games": 155,
"wins": 81,
"losses": 74,
"win_pct": 0.5226,
"runs_scored": 685.0,
"runs_allowed": 690.0,
"run_differential": -5.0,
"run_differential_per_game": -0.0323,
"avg_runs_scored": 4.4194,
"avg_runs_allowed": 4.4516,
"offense_index": 0.9844,
"defense_index": 1.0085,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.9,
"run_differential": -5.0
},
"available": true,
"quality_score": -0.0197
},
"edges": {
"quality_edge": 0.2681,
"offense_edge": 0.0255,
"opponent_offense_edge": -0.0156,
"defense_strength": 0.2172,
"opponent_defense_weakness": -0.0085,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0179,
"run_prevention": 0.9624,
"strikeout": 1.0093
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "701542",
"profile": {
"available": true,
"pitcher_id": "701542",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 614.0,
"k_percent": 22.9,
"bb_percent": 8.0,
"woba": 0.331,
"xwoba": 0.322,
"sweet_spot_percent": 33.4,
"barrel_batted_rate": 7.6,
"hard_hit_percent": 44.4,
"avg_best_speed": 80.6857,
"avg_hyper_speed": 95.0527,
"whiff_percent": 22.1,
"swing_percent": 44.2
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.3455,
"command_and_miss": -0.0321,
"regression_edge": 0.2571,
"xwoba_edge": -0.2929,
"barrel_edge": -0.0889,
"hard_hit_edge": -0.9286,
"whiff_edge": -0.4143,
"bb_edge": 0.275,
"pitch_design_score": 0.0213
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "701542",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 81,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 90.23091435435248,
"release_spin_rate": 2497.036711974932,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 90.23091435435248,
"release_spin_rate": 2497.036711974932,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 90.2309,
"release_spin_rate": 2497.0367,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.0213,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.152,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.1744,
"sample_weight": 1.0,
"run_prevention_factor": 1.0148,
"strikeout_factor": 0.9886,
"walk_factor": 0.978,
"homer_factor": 1.053,
"woba_minus_xwoba": 0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "701542",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0148,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0148,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.978,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.053,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 0.9886,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 4,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 107,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260920_NYY@ARI.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_NYY@ARI | home | Corbin Burnes | Corbin Burnes | True | 4.0 | 2.2 | -4 | 2 | 4 | 2 | 3/5 | 5/2 | 5/2 | Last 10 before this game (2 available){
"model_context": {
"embedded_season": {
"ERA": 5.869565217391304,
"WHIP": 1.1739130434782608,
"IP": 7.2,
"games_started": null,
"games_pitched": 2,
"role_avg_IP": 3.833,
"recent_avg_IP": 3.833,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0391,
"sample_weight": 0.45,
"run_prevention_factor": 1.0033,
"strikeout_factor": 0.9992,
"walk_factor": 0.9748,
"homer_factor": 1.0361,
"regression_flag": "positive_pitcher_regression",
"k_percent": 18.8,
"bb_percent": 6.3,
"woba": 0.356,
"xwoba": 0.298,
"barrel_percent": 12.5,
"hard_hit_percent": 37.5,
"whiff_percent": 27.9
},
"espn_rank": {
"rank": 553,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 2.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2857,
"prior_weight": 0.7143
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669203",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 2,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 2,
"totals": {
"IP": 7.2,
"ER": 5.0,
"R": 5.0,
"H": 7.0,
"BB": 2.0,
"SO": 6.0,
"HR": 2.0,
"BF": 32.0,
"Pitches": 132.0
},
"per_game": {
"IP": 4.0,
"ER": 2.5,
"R": 2.5,
"H": 3.5,
"BB": 1.0,
"SO": 3.0,
"HR": 1.0,
"BF": 16.0,
"Pitches": 66.0
},
"rates": {
"ERA": 5.8696,
"WHIP": 1.1739,
"ER_per_IP": 0.65217,
"H_per_IP": 0.91304,
"BB_per_IP": 0.26087,
"SO_per_IP": 0.78261,
"HR_per_IP": 0.26087
}
},
"last_10": {
"games": 2,
"totals": {
"IP": 7.2,
"ER": 5.0,
"R": 5.0,
"H": 7.0,
"BB": 2.0,
"SO": 6.0,
"HR": 2.0,
"BF": 32.0,
"Pitches": 132.0
},
"per_game": {
"IP": 4.0,
"ER": 2.5,
"R": 2.5,
"H": 3.5,
"BB": 1.0,
"SO": 3.0,
"HR": 1.0,
"BF": 16.0,
"Pitches": 66.0
},
"rates": {
"ERA": 5.8696,
"WHIP": 1.1739,
"ER_per_IP": 0.65217,
"H_per_IP": 0.91304,
"BB_per_IP": 0.26087,
"SO_per_IP": 0.78261,
"HR_per_IP": 0.26087
}
},
"season": {
"games": 2,
"totals": {
"IP": 7.2,
"ER": 5.0,
"R": 5.0,
"H": 7.0,
"BB": 2.0,
"SO": 6.0,
"HR": 2.0,
"BF": 32.0,
"Pitches": 132.0
},
"per_game": {
"IP": 4.0,
"ER": 2.5,
"R": 2.5,
"H": 3.5,
"BB": 1.0,
"SO": 3.0,
"HR": 1.0,
"BF": 16.0,
"Pitches": 66.0
},
"rates": {
"ERA": 5.8696,
"WHIP": 1.1739,
"ER_per_IP": 0.65217,
"H_per_IP": 0.91304,
"BB_per_IP": 0.26087,
"SO_per_IP": 0.78261,
"HR_per_IP": 0.26087
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.466,
"predicted_H": 4.307,
"predicted_BB": 1.535,
"predicted_SO": 3.99,
"predicted_HR": 0.812,
"predicted_ERA": 4.9579,
"predicted_WHIP": 1.3051
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.6518,
"form_weight": 0.3482,
"form_reliability": 0.2857,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 2.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2857,
"prior_weight": 0.7143
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.466,
"final": 2.1623,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.307,
"final": 3.4551,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 5.0,
"form": 1.535,
"final": 3.7935,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.99,
"final": 4.6483,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.812,
"final": 0.2827,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.9579,
"final": 4.9579,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3051,
"final": 1.3051,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 7.2,
"ER": 5,
"H": 7,
"BB": 2,
"SO": 6,
"HR": 2,
"ERA": 5.869565217391304,
"WHIP": 1.1739130434782608,
"K9": 7.0434782608695645,
"HR9": 2.3478260869565215,
"games_pitched": 2,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 2,
"error_prone": false
},
"games_count": 2,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 1.0386305512614782,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_BB": 5.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 2.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2857,
"prior_weight": 0.7143
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.0,
"predicted_ER": 2,
"predicted_H": 3,
"predicted_BB": 5,
"predicted_SO": 5,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669203",
"player_name": "Corbin Burnes",
"position": "Starter",
"team": "ARI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.0,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ARI",
"games": 155,
"wins": 81,
"losses": 74,
"win_pct": 0.5226,
"runs_scored": 685.0,
"runs_allowed": 690.0,
"run_differential": -5.0,
"run_differential_per_game": -0.0323,
"avg_runs_scored": 4.4194,
"avg_runs_allowed": 4.4516,
"offense_index": 0.9844,
"defense_index": 1.0085,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.9,
"run_differential": -5.0
},
"available": true,
"quality_score": -0.0197
},
"opponent": {
"team": "NYY",
"games": 154,
"wins": 89,
"losses": 65,
"win_pct": 0.5779,
"runs_scored": 709.0,
"runs_allowed": 568.0,
"run_differential": 141.0,
"run_differential_per_game": 0.9156,
"avg_runs_scored": 4.6039,
"avg_runs_allowed": 3.6883,
"offense_index": 1.0255,
"defense_index": 1.2172,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.8,
"avg_runs_allowed": 3.6,
"run_differential": 22.0
},
"available": true,
"quality_score": 0.2484
},
"edges": {
"quality_edge": -0.2681,
"offense_edge": -0.0156,
"opponent_offense_edge": 0.0255,
"defense_strength": 0.0085,
"opponent_defense_weakness": -0.2172,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9885,
"run_prevention": 1.0166,
"strikeout": 0.9899
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669203",
"profile": {
"available": true,
"pitcher_id": "669203",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 13.0,
"k_percent": 18.8,
"bb_percent": 6.3,
"woba": 0.356,
"xwoba": 0.298,
"sweet_spot_percent": 45.8,
"barrel_batted_rate": 12.5,
"hard_hit_percent": 37.5,
"avg_best_speed": 82.6878,
"avg_hyper_speed": 93.7523,
"whiff_percent": 27.9,
"swing_percent": 51.5
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.4796,
"command_and_miss": 0.0793,
"regression_edge": 1.6571,
"xwoba_edge": 0.3929,
"barrel_edge": -1.1778,
"hard_hit_edge": 0.0571,
"whiff_edge": 0.4143,
"bb_edge": 0.7,
"pitch_design_score": -0.0573
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669203",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 57,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 57,
"pitch_usage": 0.0,
"release_speed": 88.8280701754386,
"release_spin_rate": 2541.40350877193,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 57,
"pitch_usage": 0.0,
"release_speed": 88.8280701754386,
"release_spin_rate": 2541.40350877193,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 88.8281,
"release_spin_rate": 2541.4035,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0573,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4092,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.0391,
"sample_weight": 0.45,
"run_prevention_factor": 1.0033,
"strikeout_factor": 0.9992,
"walk_factor": 0.9748,
"homer_factor": 1.0361,
"woba_minus_xwoba": 0.058,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "669203",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0015,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 1.0015,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.9887,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0162,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9996,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.0,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 5,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 20,
"Pitches": 91,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 2 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was +2."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +3."
}
],
"provenance": {
"prediction": "output/games/20260920_NYY@ARI.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_OAK@CLE | away | Jack Perkins | Jack Perkins | True | 4.2 | 6.0 | 4 | 5 | 1 | -4 | 8/5 | 0/0 | 4/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 6.136363636363637,
"WHIP": 1.481818181818182,
"IP": 110.0,
"games_started": null,
"games_pitched": 35,
"role_avg_IP": 4.689,
"recent_avg_IP": 4.933,
"last_start_IP": 6.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0472,
"sample_weight": 1.0,
"run_prevention_factor": 0.996,
"strikeout_factor": 1.0297,
"walk_factor": 1.012,
"homer_factor": 1.0285,
"regression_flag": "positive_pitcher_regression",
"k_percent": 25.6,
"bb_percent": 9.7,
"woba": 0.353,
"xwoba": 0.311,
"barrel_percent": 9.0,
"hard_hit_percent": 37.4,
"whiff_percent": 26.6
},
"espn_rank": {
"rank": 846,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 35.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.875,
"prior_weight": 0.125
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "678022",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 35,
"reference_playing_time": 8.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.2,
"ER": 9.0,
"R": 13.0,
"H": 22.0,
"BB": 15.0,
"SO": 29.0,
"HR": 4.0,
"BF": 110.0,
"Pitches": 425.0
},
"per_game": {
"IP": 5.0,
"ER": 1.8,
"R": 2.6,
"H": 4.4,
"BB": 3.0,
"SO": 5.8,
"HR": 0.8,
"BF": 22.0,
"Pitches": 85.0
},
"rates": {
"ERA": 3.2838,
"WHIP": 1.5,
"ER_per_IP": 0.36486,
"H_per_IP": 0.89189,
"BB_per_IP": 0.60811,
"SO_per_IP": 1.17568,
"HR_per_IP": 0.16216
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.1,
"ER": 28.0,
"R": 33.0,
"H": 50.0,
"BB": 24.0,
"SO": 51.0,
"HR": 9.0,
"BF": 212.0,
"Pitches": 805.0
},
"per_game": {
"IP": 4.2,
"ER": 2.8,
"R": 3.3,
"H": 5.0,
"BB": 2.4,
"SO": 5.1,
"HR": 0.9,
"BF": 21.2,
"Pitches": 80.5
},
"rates": {
"ERA": 5.3239,
"WHIP": 1.5634,
"ER_per_IP": 0.59155,
"H_per_IP": 1.05634,
"BB_per_IP": 0.50704,
"SO_per_IP": 1.07746,
"HR_per_IP": 0.19014
}
},
"season": {
"games": 35,
"totals": {
"IP": 110.0,
"ER": 75.0,
"R": 82.0,
"H": 115.0,
"BB": 48.0,
"SO": 127.0,
"HR": 20.0,
"BF": 497.0,
"Pitches": 1927.0
},
"per_game": {
"IP": 3.0,
"ER": 2.1429,
"R": 2.3429,
"H": 3.2857,
"BB": 1.3714,
"SO": 3.6286,
"HR": 0.5714,
"BF": 14.2,
"Pitches": 55.0571
},
"rates": {
"ERA": 6.1364,
"WHIP": 1.4818,
"ER_per_IP": 0.68182,
"H_per_IP": 1.04545,
"BB_per_IP": 0.43636,
"SO_per_IP": 1.15455,
"HR_per_IP": 0.18182
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.501,
"predicted_H": 4.826,
"predicted_BB": 2.55,
"predicted_SO": 5.473,
"predicted_HR": 0.85,
"predicted_ERA": 4.5715,
"predicted_WHIP": 1.4984
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4028,
"form_weight": 0.5972,
"form_reliability": 0.875,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 35.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.875,
"prior_weight": 0.125
},
"applied_metrics": {
"predicted_IP": {
"model": 8.0,
"form": 5.0,
"final": 6.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 6.0,
"form": 2.501,
"final": 3.9104,
"source": "model_form_blend"
},
"predicted_H": {
"model": 8.0,
"form": 4.826,
"final": 6.1045,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.55,
"final": 1.5228,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 5.473,
"final": 4.8797,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.85,
"final": 0.9104,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5715,
"final": 4.5715,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4984,
"final": 1.4984,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 47.1,
"ER": 28,
"H": 50,
"BB": 24,
"SO": 51,
"HR": 9,
"ERA": 5.323943661971832,
"WHIP": 1.563380281690141,
"K9": 9.69718309859155,
"HR9": 1.711267605633803,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 1.1008369010249754,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 8.0,
"predicted_ER": 6.0,
"predicted_H": 8.0,
"predicted_BB": 0.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 35.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.875,
"prior_weight": 0.125
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 6,
"predicted_H": 8,
"predicted_BB": 0,
"predicted_SO": 4,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "678022",
"player_name": "Jack Perkins",
"position": "Starter",
"team": "OAK",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 6.0,
"predicted_H": 8.0,
"predicted_HR": 1.0,
"predicted_IP": 8.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 6.0,
"predicted_H": 8.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 6.0,
"predicted_H": 8.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_R": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "OAK",
"games": 155,
"wins": 61,
"losses": 94,
"win_pct": 0.3935,
"runs_scored": 670.0,
"runs_allowed": 892.0,
"run_differential": -222.0,
"run_differential_per_game": -1.4323,
"avg_runs_scored": 4.3226,
"avg_runs_allowed": 5.7548,
"offense_index": 0.9625,
"defense_index": 0.7804,
"current_streak": "L5",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 6.8,
"run_differential": -35.0
},
"available": true,
"quality_score": -0.3359
},
"opponent": {
"team": "CLE",
"games": 155,
"wins": 80,
"losses": 75,
"win_pct": 0.5161,
"runs_scored": 648.0,
"runs_allowed": 647.0,
"run_differential": 1.0,
"run_differential_per_game": 0.0065,
"avg_runs_scored": 4.1806,
"avg_runs_allowed": 4.1742,
"offense_index": 0.9309,
"defense_index": 1.0759,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.4,
"avg_runs_allowed": 4.7,
"run_differential": 17.0
},
"available": true,
"quality_score": 0.0845
},
"edges": {
"quality_edge": -0.4204,
"offense_edge": -0.0375,
"opponent_offense_edge": -0.0691,
"defense_strength": -0.2196,
"opponent_defense_weakness": -0.0759,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9794,
"run_prevention": 1.0319,
"strikeout": 0.9929
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "678022",
"profile": {
"available": true,
"pitcher_id": "678022",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 462.0,
"k_percent": 25.6,
"bb_percent": 9.7,
"woba": 0.353,
"xwoba": 0.311,
"sweet_spot_percent": 35.3,
"barrel_batted_rate": 9.0,
"hard_hit_percent": 37.4,
"avg_best_speed": 78.7611,
"avg_hyper_speed": 93.5792,
"whiff_percent": 26.6,
"swing_percent": 47.8
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2721,
"command_and_miss": 0.2814,
"regression_edge": 1.2,
"xwoba_edge": 0.0214,
"barrel_edge": -0.4,
"hard_hit_edge": 0.0714,
"whiff_edge": 0.2286,
"bb_edge": -0.15,
"pitch_design_score": 0.08
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "678022",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 80,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 80,
"pitch_usage": 0.0,
"release_speed": 91.28030678673174,
"release_spin_rate": 2236.0689533094624,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 80,
"pitch_usage": 0.0,
"release_speed": 91.28030678673174,
"release_spin_rate": 2236.0689533094624,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 91.2803,
"release_spin_rate": 2236.069,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.08,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.5717,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.0472,
"sample_weight": 1.0,
"run_prevention_factor": 0.996,
"strikeout_factor": 1.0297,
"walk_factor": 1.012,
"homer_factor": 1.0285,
"woba_minus_xwoba": 0.042,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "678022",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.996,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.996,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.012,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0285,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0297,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 8,
"predicted_R": 6,
"predicted_ER": 6,
"predicted_BB": 0,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 92,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 4",
"detail": "Actual minus predicted earned runs was -4; this is the primary run-prevention error."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260920_OAK@CLE.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_OAK@CLE | home | Gavin Williams | Gavin Williams | True | 5.1 | 7.0 | 5 | 3 | 0 | -3 | 4/3 | 0/1 | 7/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.7758620689655173,
"WHIP": 1.103448275862069,
"IP": 174.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.8,
"recent_avg_IP": 5.0,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2513,
"sample_weight": 1.0,
"run_prevention_factor": 0.9786,
"strikeout_factor": 1.1091,
"walk_factor": 0.976,
"homer_factor": 1.1137,
"regression_flag": "neutral",
"k_percent": 33.3,
"bb_percent": 7.9,
"woba": 0.293,
"xwoba": 0.3,
"barrel_percent": 11.3,
"hard_hit_percent": 46.8,
"whiff_percent": 32.8
},
"espn_rank": {
"rank": 46,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "668909",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 11.0,
"R": 12.0,
"H": 20.0,
"BB": 11.0,
"SO": 45.0,
"HR": 3.0,
"BF": 108.0,
"Pitches": 467.0
},
"per_game": {
"IP": 5.0,
"ER": 2.2,
"R": 2.4,
"H": 4.0,
"BB": 2.2,
"SO": 9.0,
"HR": 0.6,
"BF": 21.6,
"Pitches": 93.4
},
"rates": {
"ERA": 3.96,
"WHIP": 1.24,
"ER_per_IP": 0.44,
"H_per_IP": 0.8,
"BB_per_IP": 0.44,
"SO_per_IP": 1.8,
"HR_per_IP": 0.12
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.2,
"ER": 20.0,
"R": 21.0,
"H": 36.0,
"BB": 19.0,
"SO": 90.0,
"HR": 7.0,
"BF": 220.0,
"Pitches": 947.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0,
"R": 2.1,
"H": 3.6,
"BB": 1.9,
"SO": 9.0,
"HR": 0.7,
"BF": 22.0,
"Pitches": 94.7
},
"rates": {
"ERA": 3.2927,
"WHIP": 1.0061,
"ER_per_IP": 0.36585,
"H_per_IP": 0.65854,
"BB_per_IP": 0.34756,
"SO_per_IP": 1.64634,
"HR_per_IP": 0.12805
}
},
"season": {
"games": 30,
"totals": {
"IP": 174.0,
"ER": 73.0,
"R": 77.0,
"H": 136.0,
"BB": 56.0,
"SO": 235.0,
"HR": 27.0,
"BF": 705.0,
"Pitches": 2828.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4333,
"R": 2.5667,
"H": 4.5333,
"BB": 1.8667,
"SO": 7.8333,
"HR": 0.9,
"BF": 23.5,
"Pitches": 94.2667
},
"rates": {
"ERA": 3.7759,
"WHIP": 1.1034,
"ER_per_IP": 0.41954,
"H_per_IP": 0.78161,
"BB_per_IP": 0.32184,
"SO_per_IP": 1.35057,
"HR_per_IP": 0.15517
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.233,
"predicted_H": 4.106,
"predicted_BB": 2.014,
"predicted_SO": 8.173,
"predicted_HR": 0.698,
"predicted_ERA": 3.8188,
"predicted_WHIP": 1.1632
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.233,
"final": 2.5478,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.106,
"final": 4.0625,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.014,
"final": 1.1875,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 8.173,
"final": 6.0501,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.698,
"final": 0.4116,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.8188,
"final": 3.8188,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1632,
"final": 1.1632,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 54.2,
"ER": 20,
"H": 36,
"BB": 19,
"SO": 90,
"HR": 7,
"ERA": 3.292682926829268,
"WHIP": 1.0060975609756098,
"K9": 14.817073170731707,
"HR9": 1.1524390243902438,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 0.8583880003035737,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_BB": 0.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.1,
"predicted_ER": 3,
"predicted_H": 4,
"predicted_BB": 0,
"predicted_SO": 8,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "668909",
"player_name": "Gavin Williams",
"position": "Starter",
"team": "CLE",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 8.0,
"delta": 5.0,
"percent_delta": 1.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 8.0,
"delta": 5.0,
"percent_delta": 1.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.1,
"after": 5.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 7.0,
"delta": -1.0,
"percent_delta": -0.125,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_SO",
"before": 8.0,
"after": 7.0,
"delta": -1.0,
"percent_delta": -0.125,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 7.0,
"delta": 4.0,
"percent_delta": 1.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 7.0,
"delta": 4.0,
"percent_delta": 1.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CLE",
"games": 155,
"wins": 80,
"losses": 75,
"win_pct": 0.5161,
"runs_scored": 648.0,
"runs_allowed": 647.0,
"run_differential": 1.0,
"run_differential_per_game": 0.0065,
"avg_runs_scored": 4.1806,
"avg_runs_allowed": 4.1742,
"offense_index": 0.9309,
"defense_index": 1.0759,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.4,
"avg_runs_allowed": 4.7,
"run_differential": 17.0
},
"available": true,
"quality_score": 0.0845
},
"opponent": {
"team": "OAK",
"games": 155,
"wins": 61,
"losses": 94,
"win_pct": 0.3935,
"runs_scored": 670.0,
"runs_allowed": 892.0,
"run_differential": -222.0,
"run_differential_per_game": -1.4323,
"avg_runs_scored": 4.3226,
"avg_runs_allowed": 5.7548,
"offense_index": 0.9625,
"defense_index": 0.7804,
"current_streak": "L5",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 6.8,
"run_differential": -35.0
},
"available": true,
"quality_score": -0.3359
},
"edges": {
"quality_edge": 0.4204,
"offense_edge": -0.0691,
"opponent_offense_edge": -0.0375,
"defense_strength": 0.0759,
"opponent_defense_weakness": 0.2196,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0206,
"run_prevention": 0.9654,
"strikeout": 1.0156
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "668909",
"profile": {
"available": true,
"pitcher_id": "668909",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 676.0,
"k_percent": 33.3,
"bb_percent": 7.9,
"woba": 0.293,
"xwoba": 0.3,
"sweet_spot_percent": 35.3,
"barrel_batted_rate": 11.3,
"hard_hit_percent": 46.8,
"avg_best_speed": 78.9895,
"avg_hyper_speed": 94.961,
"whiff_percent": 32.8,
"swing_percent": 48.9
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0705,
"command_and_miss": 1.1764,
"regression_edge": -0.2,
"xwoba_edge": 0.3357,
"barrel_edge": -0.9111,
"hard_hit_edge": -1.2714,
"whiff_edge": 1.1143,
"bb_edge": 0.3,
"pitch_design_score": 0.062
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "668909",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 89,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 89,
"pitch_usage": 0.0,
"release_speed": 90.95843064344741,
"release_spin_rate": 2289.7118231943073,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 89,
"pitch_usage": 0.0,
"release_speed": 90.95843064344741,
"release_spin_rate": 2289.7118231943073,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 90.9584,
"release_spin_rate": 2289.7118,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.062,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.443,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.2513,
"sample_weight": 1.0,
"run_prevention_factor": 0.9786,
"strikeout_factor": 1.1091,
"walk_factor": 0.976,
"homer_factor": 1.1137,
"woba_minus_xwoba": -0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "668909",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9786,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9786,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.976,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1137,
"adjusted": 1
},
"predicted_SO": {
"original": 9.0,
"factor": 1.1091,
"adjusted": 10
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 20,
"Pitches": 79,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260920_OAK@CLE.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_PHI@NYM | away | Cristopher Sánchez | Cristopher Sánchez | True | 6.1 | 6.1 | 0 | 4 | 2 | -2 | 3/6 | 5/0 | 6/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.927710843373494,
"WHIP": 1.223752151462995,
"IP": 193.2,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 6.247,
"recent_avg_IP": 6.4,
"last_start_IP": 6.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4413,
"sample_weight": 1.0,
"run_prevention_factor": 0.9625,
"strikeout_factor": 1.0651,
"walk_factor": 0.928,
"homer_factor": 0.9992,
"regression_flag": "neutral",
"k_percent": 26.7,
"bb_percent": 5.5,
"woba": 0.3,
"xwoba": 0.286,
"barrel_percent": 7.4,
"hard_hit_percent": 41.0,
"whiff_percent": 31.7
},
"espn_rank": {
"rank": null,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "650911",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 32.0,
"ER": 18.0,
"R": 18.0,
"H": 34.0,
"BB": 6.0,
"SO": 28.0,
"HR": 4.0,
"BF": 132.0,
"Pitches": 481.0
},
"per_game": {
"IP": 6.1,
"ER": 3.6,
"R": 3.6,
"H": 6.8,
"BB": 1.2,
"SO": 5.6,
"HR": 0.8,
"BF": 26.4,
"Pitches": 96.2
},
"rates": {
"ERA": 5.0625,
"WHIP": 1.25,
"ER_per_IP": 0.5625,
"H_per_IP": 1.0625,
"BB_per_IP": 0.1875,
"SO_per_IP": 0.875,
"HR_per_IP": 0.125
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.0,
"ER": 24.0,
"R": 24.0,
"H": 60.0,
"BB": 19.0,
"SO": 64.0,
"HR": 5.0,
"BF": 255.0,
"Pitches": 958.0
},
"per_game": {
"IP": 6.0,
"ER": 2.4,
"R": 2.4,
"H": 6.0,
"BB": 1.9,
"SO": 6.4,
"HR": 0.5,
"BF": 25.5,
"Pitches": 95.8
},
"rates": {
"ERA": 3.541,
"WHIP": 1.2951,
"ER_per_IP": 0.39344,
"H_per_IP": 0.98361,
"BB_per_IP": 0.31148,
"SO_per_IP": 1.04918,
"HR_per_IP": 0.08197
}
},
"season": {
"games": 31,
"totals": {
"IP": 193.2,
"ER": 63.0,
"R": 69.0,
"H": 193.0,
"BB": 44.0,
"SO": 215.0,
"HR": 17.0,
"BF": 805.0,
"Pitches": 2960.0
},
"per_game": {
"IP": 6.1,
"ER": 2.0323,
"R": 2.2258,
"H": 6.2258,
"BB": 1.4194,
"SO": 6.9355,
"HR": 0.5484,
"BF": 25.9677,
"Pitches": 95.4839
},
"rates": {
"ERA": 2.9277,
"WHIP": 1.2238,
"ER_per_IP": 0.3253,
"H_per_IP": 0.99656,
"BB_per_IP": 0.22719,
"SO_per_IP": 1.11015,
"HR_per_IP": 0.08778
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 2.889,
"predicted_H": 6.334,
"predicted_BB": 1.607,
"predicted_SO": 6.085,
"predicted_HR": 0.68,
"predicted_ERA": 4.1711,
"predicted_WHIP": 1.274
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 6.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.889,
"final": 2.9344,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 6.334,
"final": 4.9714,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 5.0,
"form": 1.607,
"final": 2.9937,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 6.085,
"final": 4.4155,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.68,
"final": 0.4021,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1711,
"final": 4.1711,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.274,
"final": 1.274,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 61.0,
"ER": 24,
"H": 60,
"BB": 19,
"SO": 64,
"HR": 5,
"ERA": 3.540983606557377,
"WHIP": 1.2950819672131149,
"K9": 9.442622950819672,
"HR9": 0.7377049180327869,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.8935464369289235,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_BB": 5.0,
"predicted_SO": 2.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.1,
"predicted_ER": 3,
"predicted_H": 3,
"predicted_BB": 5,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "650911",
"player_name": "Cristopher S\u00e1nchez",
"position": "Starter",
"team": "PHI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.3333,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 6.0,
"delta": 4.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 6.0,
"delta": 4.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.1,
"after": 6.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 6.0,
"delta": 4.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 6.0,
"delta": 4.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PHI",
"games": 155,
"wins": 85,
"losses": 70,
"win_pct": 0.5484,
"runs_scored": 690.0,
"runs_allowed": 666.0,
"run_differential": 24.0,
"run_differential_per_game": 0.1548,
"avg_runs_scored": 4.4516,
"avg_runs_allowed": 4.2968,
"offense_index": 0.99,
"defense_index": 1.0465,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 5.3,
"run_differential": -10.0
},
"available": true,
"quality_score": 0.0251
},
"opponent": {
"team": "NYM",
"games": 155,
"wins": 71,
"losses": 84,
"win_pct": 0.4581,
"runs_scored": 666.0,
"runs_allowed": 702.0,
"run_differential": -36.0,
"run_differential_per_game": -0.2323,
"avg_runs_scored": 4.2968,
"avg_runs_allowed": 4.529,
"offense_index": 0.9556,
"defense_index": 0.9928,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 4.9,
"run_differential": 5.0
},
"available": true,
"quality_score": -0.099
},
"edges": {
"quality_edge": 0.1241,
"offense_edge": -0.01,
"opponent_offense_edge": -0.0444,
"defense_strength": 0.0465,
"opponent_defense_weakness": 0.0072,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0081,
"run_prevention": 0.982,
"strikeout": 1.0073
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "650911",
"profile": {
"available": true,
"pitcher_id": "650911",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 773.0,
"k_percent": 26.7,
"bb_percent": 5.5,
"woba": 0.3,
"xwoba": 0.286,
"sweet_spot_percent": 32.3,
"barrel_batted_rate": 7.4,
"hard_hit_percent": 41.0,
"avg_best_speed": 77.7846,
"avg_hyper_speed": 94.381,
"whiff_percent": 31.7,
"swing_percent": 50.2
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.333,
"command_and_miss": 0.8171,
"regression_edge": 0.4,
"xwoba_edge": 0.7357,
"barrel_edge": -0.0444,
"hard_hit_edge": -0.4429,
"whiff_edge": 0.9571,
"bb_edge": 0.9,
"pitch_design_score": 0.0295
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "650911",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 94,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 90.3783652742236,
"release_spin_rate": 2082.1207290628663,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 90.3783652742236,
"release_spin_rate": 2082.1207290628663,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 90.3784,
"release_spin_rate": 2082.1207,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.0295,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.211,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.4413,
"sample_weight": 1.0,
"run_prevention_factor": 0.9625,
"strikeout_factor": 1.0651,
"walk_factor": 0.928,
"homer_factor": 0.9992,
"woba_minus_xwoba": 0.014,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "650911",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9625,
"adjusted": 3
},
"predicted_H": {
"original": 7.0,
"factor": 0.9625,
"adjusted": 7
},
"predicted_BB": {
"original": 1.0,
"factor": 0.928,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9992,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0651,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 5,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 30,
"Pitches": 121,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -5."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260920_PHI@NYM.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_PHI@NYM | home | Jonah Tong | Jonah Tong | True | 5.1 | 4.2 | -2 | 2 | 4 | 2 | 6/5 | 2/4 | 11/5 | Last 10 before this game (5 available){
"model_context": {
"embedded_season": {
"ERA": 3.4285714285714284,
"WHIP": 1.1904761904761905,
"IP": 21.0,
"games_started": null,
"games_pitched": 5,
"role_avg_IP": 5.5,
"recent_avg_IP": 5.5,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1904,
"sample_weight": 0.45,
"run_prevention_factor": 0.9838,
"strikeout_factor": 1.0075,
"walk_factor": 1.0072,
"homer_factor": 0.9632,
"regression_flag": "neutral",
"k_percent": 22.0,
"bb_percent": 9.9,
"woba": 0.274,
"xwoba": 0.274,
"barrel_percent": 6.6,
"hard_hit_percent": 31.1,
"whiff_percent": 27.9
},
"espn_rank": {
"rank": 420,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5,
"prior_weight": 0.5
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "804636",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 5,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 21.0,
"ER": 8.0,
"R": 11.0,
"H": 16.0,
"BB": 9.0,
"SO": 20.0,
"HR": 2.0,
"BF": 91.0,
"Pitches": 357.0
},
"per_game": {
"IP": 4.1,
"ER": 1.6,
"R": 2.2,
"H": 3.2,
"BB": 1.8,
"SO": 4.0,
"HR": 0.4,
"BF": 18.2,
"Pitches": 71.4
},
"rates": {
"ERA": 3.4286,
"WHIP": 1.1905,
"ER_per_IP": 0.38095,
"H_per_IP": 0.7619,
"BB_per_IP": 0.42857,
"SO_per_IP": 0.95238,
"HR_per_IP": 0.09524
}
},
"last_10": {
"games": 5,
"totals": {
"IP": 21.0,
"ER": 8.0,
"R": 11.0,
"H": 16.0,
"BB": 9.0,
"SO": 20.0,
"HR": 2.0,
"BF": 91.0,
"Pitches": 357.0
},
"per_game": {
"IP": 4.1,
"ER": 1.6,
"R": 2.2,
"H": 3.2,
"BB": 1.8,
"SO": 4.0,
"HR": 0.4,
"BF": 18.2,
"Pitches": 71.4
},
"rates": {
"ERA": 3.4286,
"WHIP": 1.1905,
"ER_per_IP": 0.38095,
"H_per_IP": 0.7619,
"BB_per_IP": 0.42857,
"SO_per_IP": 0.95238,
"HR_per_IP": 0.09524
}
},
"season": {
"games": 5,
"totals": {
"IP": 21.0,
"ER": 8.0,
"R": 11.0,
"H": 16.0,
"BB": 9.0,
"SO": 20.0,
"HR": 2.0,
"BF": 91.0,
"Pitches": 357.0
},
"per_game": {
"IP": 4.1,
"ER": 1.6,
"R": 2.2,
"H": 3.2,
"BB": 1.8,
"SO": 4.0,
"HR": 0.4,
"BF": 18.2,
"Pitches": 71.4
},
"rates": {
"ERA": 3.4286,
"WHIP": 1.1905,
"ER_per_IP": 0.38095,
"H_per_IP": 0.7619,
"BB_per_IP": 0.42857,
"SO_per_IP": 0.95238,
"HR_per_IP": 0.09524
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.08,
"predicted_H": 4.069,
"predicted_BB": 1.876,
"predicted_SO": 4.404,
"predicted_HR": 0.571,
"predicted_ERA": 4.011,
"predicted_WHIP": 1.274
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5613,
"form_weight": 0.4388,
"form_reliability": 0.5,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5,
"prior_weight": 0.5
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.2,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.08,
"final": 2.0351,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.069,
"final": 5.1528,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.876,
"final": 1.9456,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 11.0,
"form": 4.404,
"final": 8.106,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.571,
"final": 0.2505,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.011,
"final": 4.011,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.274,
"final": 1.274,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 21.0,
"ER": 8,
"H": 16,
"BB": 9,
"SO": 20,
"HR": 2,
"ERA": 3.4285714285714284,
"WHIP": 1.1904761904761905,
"K9": 8.571428571428571,
"HR9": 0.8571428571428571,
"games_pitched": 5,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 5,
"error_prone": false
},
"games_count": 5,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 0.9155367900942294,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_BB": 2.0,
"predicted_SO": 11.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5,
"prior_weight": 0.5
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "804636",
"player_name": "Jonah Tong",
"position": "Starter",
"team": "NYM",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 11.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_R": 2.0,
"predicted_SO": 11.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.1,
"delta": 0.1,
"percent_delta": 0.02,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 11.0,
"after": 11.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.1,
"delta": 0.1,
"percent_delta": 0.02,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 11.0,
"after": 11.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYM",
"games": 155,
"wins": 71,
"losses": 84,
"win_pct": 0.4581,
"runs_scored": 666.0,
"runs_allowed": 702.0,
"run_differential": -36.0,
"run_differential_per_game": -0.2323,
"avg_runs_scored": 4.2968,
"avg_runs_allowed": 4.529,
"offense_index": 0.9556,
"defense_index": 0.9928,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 4.9,
"run_differential": 5.0
},
"available": true,
"quality_score": -0.099
},
"opponent": {
"team": "PHI",
"games": 155,
"wins": 85,
"losses": 70,
"win_pct": 0.5484,
"runs_scored": 690.0,
"runs_allowed": 666.0,
"run_differential": 24.0,
"run_differential_per_game": 0.1548,
"avg_runs_scored": 4.4516,
"avg_runs_allowed": 4.2968,
"offense_index": 0.99,
"defense_index": 1.0465,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 5.3,
"run_differential": -10.0
},
"available": true,
"quality_score": 0.0251
},
"edges": {
"quality_edge": -0.1241,
"offense_edge": -0.0444,
"opponent_offense_edge": -0.01,
"defense_strength": -0.0072,
"opponent_defense_weakness": -0.0465,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9952,
"run_prevention": 1.0053,
"strikeout": 0.9971
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "804636",
"profile": {
"available": true,
"pitcher_id": "804636",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 67.0,
"k_percent": 22.0,
"bb_percent": 9.9,
"woba": 0.274,
"xwoba": 0.274,
"sweet_spot_percent": 27.9,
"barrel_batted_rate": 6.6,
"hard_hit_percent": 31.1,
"avg_best_speed": 81.5606,
"avg_hyper_speed": 93.4341,
"whiff_percent": 27.9,
"swing_percent": 51.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.695,
"command_and_miss": 0.105,
"regression_edge": 0.0,
"xwoba_edge": 1.0786,
"barrel_edge": 0.1333,
"hard_hit_edge": 0.9714,
"whiff_edge": 0.4143,
"bb_edge": -0.2,
"pitch_design_score": 0.0829
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "804636",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 68,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 68,
"pitch_usage": 0.0,
"release_speed": 91.33206041693349,
"release_spin_rate": 2105.603159331649,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 68,
"pitch_usage": 0.0,
"release_speed": 91.33206041693349,
"release_spin_rate": 2105.603159331649,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 91.3321,
"release_spin_rate": 2105.6032,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.0829,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.5924,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.1904,
"sample_weight": 0.45,
"run_prevention_factor": 0.9838,
"strikeout_factor": 1.0075,
"walk_factor": 1.0072,
"homer_factor": 0.9632,
"woba_minus_xwoba": 0.0,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "804636",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9927,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9927,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 1.0032,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9834,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0034,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 6,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 11,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 105,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 5 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260920_PHI@NYM.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_SEA@COL | away | Kade Anderson | Kade Anderson | True | 5.0 | 7.0 | 6 | 2 | 0 | -2 | 7/3 | 2/0 | 4/7 | Last 10 before this game (5 available){
"model_context": {
"embedded_season": {
"ERA": 5.328947368421053,
"WHIP": 1.4210526315789473,
"IP": 25.1,
"games_started": null,
"games_pitched": 5,
"role_avg_IP": 5.067,
"recent_avg_IP": 5.067,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0556,
"sample_weight": 0.45,
"run_prevention_factor": 1.0047,
"strikeout_factor": 0.9871,
"walk_factor": 0.9856,
"homer_factor": 1.0107,
"regression_flag": "neutral",
"k_percent": 19.6,
"bb_percent": 7.5,
"woba": 0.345,
"xwoba": 0.317,
"barrel_percent": 7.7,
"hard_hit_percent": 39.7,
"whiff_percent": 22.4
},
"espn_rank": {
"rank": 549,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5,
"prior_weight": 0.5
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "807739",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 5,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.1,
"ER": 15.0,
"R": 15.0,
"H": 28.0,
"BB": 8.0,
"SO": 21.0,
"HR": 4.0,
"BF": 107.0,
"Pitches": 398.0
},
"per_game": {
"IP": 5.0,
"ER": 3.0,
"R": 3.0,
"H": 5.6,
"BB": 1.6,
"SO": 4.2,
"HR": 0.8,
"BF": 21.4,
"Pitches": 79.6
},
"rates": {
"ERA": 5.3289,
"WHIP": 1.4211,
"ER_per_IP": 0.59211,
"H_per_IP": 1.10526,
"BB_per_IP": 0.31579,
"SO_per_IP": 0.82895,
"HR_per_IP": 0.15789
}
},
"last_10": {
"games": 5,
"totals": {
"IP": 25.1,
"ER": 15.0,
"R": 15.0,
"H": 28.0,
"BB": 8.0,
"SO": 21.0,
"HR": 4.0,
"BF": 107.0,
"Pitches": 398.0
},
"per_game": {
"IP": 5.0,
"ER": 3.0,
"R": 3.0,
"H": 5.6,
"BB": 1.6,
"SO": 4.2,
"HR": 0.8,
"BF": 21.4,
"Pitches": 79.6
},
"rates": {
"ERA": 5.3289,
"WHIP": 1.4211,
"ER_per_IP": 0.59211,
"H_per_IP": 1.10526,
"BB_per_IP": 0.31579,
"SO_per_IP": 0.82895,
"HR_per_IP": 0.15789
}
},
"season": {
"games": 5,
"totals": {
"IP": 25.1,
"ER": 15.0,
"R": 15.0,
"H": 28.0,
"BB": 8.0,
"SO": 21.0,
"HR": 4.0,
"BF": 107.0,
"Pitches": 398.0
},
"per_game": {
"IP": 5.0,
"ER": 3.0,
"R": 3.0,
"H": 5.6,
"BB": 1.6,
"SO": 4.2,
"HR": 0.8,
"BF": 21.4,
"Pitches": 79.6
},
"rates": {
"ERA": 5.3289,
"WHIP": 1.4211,
"ER_per_IP": 0.59211,
"H_per_IP": 1.10526,
"BB_per_IP": 0.31579,
"SO_per_IP": 0.82895,
"HR_per_IP": 0.15789
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.756,
"predicted_H": 5.218,
"predicted_BB": 1.728,
"predicted_SO": 4.41,
"predicted_HR": 0.769,
"predicted_ERA": 4.9611,
"predicted_WHIP": 1.3893
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5613,
"form_weight": 0.4388,
"form_reliability": 0.5,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5,
"prior_weight": 0.5
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.756,
"final": 2.3317,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 5.218,
"final": 6.2181,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.728,
"final": 1.8807,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.41,
"final": 4.1799,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.769,
"final": 0.3374,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.9611,
"final": 4.9611,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3893,
"final": 1.3893,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 25.1,
"ER": 15,
"H": 28,
"BB": 8,
"SO": 21,
"HR": 4,
"ERA": 5.328947368421053,
"WHIP": 1.4210526315789473,
"K9": 7.460526315789474,
"HR9": 1.4210526315789473,
"games_pitched": 5,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 5,
"error_prone": false
},
"games_count": 5,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 1.0819067907393127,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2.0,
"predicted_H": 7.0,
"predicted_BB": 2.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5,
"prior_weight": 0.5
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "807739",
"player_name": "Kade Anderson",
"position": "Starter",
"team": "SEA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SEA",
"games": 155,
"wins": 72,
"losses": 83,
"win_pct": 0.4645,
"runs_scored": 632.0,
"runs_allowed": 689.0,
"run_differential": -57.0,
"run_differential_per_game": -0.3677,
"avg_runs_scored": 4.0774,
"avg_runs_allowed": 4.4452,
"offense_index": 0.9086,
"defense_index": 1.0095,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.8,
"avg_runs_allowed": 3.9,
"run_differential": 19.0
},
"available": true,
"quality_score": -0.0752
},
"opponent": {
"team": "COL",
"games": 155,
"wins": 57,
"losses": 98,
"win_pct": 0.3677,
"runs_scored": 726.0,
"runs_allowed": 902.0,
"run_differential": -176.0,
"run_differential_per_game": -1.1355,
"avg_runs_scored": 4.6839,
"avg_runs_allowed": 5.8194,
"offense_index": 1.0438,
"defense_index": 0.7711,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 7.2,
"run_differential": -29.0
},
"available": true,
"quality_score": -0.3566
},
"edges": {
"quality_edge": 0.2814,
"offense_edge": -0.0914,
"opponent_offense_edge": 0.0438,
"defense_strength": 0.0095,
"opponent_defense_weakness": 0.2289,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0098,
"run_prevention": 0.992,
"strikeout": 1.0049
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "807739",
"profile": {
"available": true,
"pitcher_id": "807739",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 87.0,
"k_percent": 19.6,
"bb_percent": 7.5,
"woba": 0.345,
"xwoba": 0.317,
"sweet_spot_percent": 39.7,
"barrel_batted_rate": 7.7,
"hard_hit_percent": 39.7,
"avg_best_speed": 75.6191,
"avg_hyper_speed": 93.8233,
"whiff_percent": 22.4,
"swing_percent": 53.8
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2592,
"command_and_miss": -0.2043,
"regression_edge": 0.8,
"xwoba_edge": -0.15,
"barrel_edge": -0.1111,
"hard_hit_edge": -0.2571,
"whiff_edge": -0.3714,
"bb_edge": 0.4,
"pitch_design_score": -0.0663
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "807739",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 81,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 88.66636505704015,
"release_spin_rate": 2106.3372663927266,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 88.66636505704015,
"release_spin_rate": 2106.3372663927266,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 88.6664,
"release_spin_rate": 2106.3373,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0663,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4738,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.0556,
"sample_weight": 0.45,
"run_prevention_factor": 1.0047,
"strikeout_factor": 0.9871,
"walk_factor": 0.9856,
"homer_factor": 1.0107,
"woba_minus_xwoba": 0.028,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "807739",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0021,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0021,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9935,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0048,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9942,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 7,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 27,
"Pitches": 104,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 5 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +6 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was -4."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260920_SEA@COL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_SEA@COL | home | Tomoyuki Sugano | Tomoyuki Sugano | True | 4.2 | 5.0 | 1 | 2 | 1 | -1 | 5/1 | 2/2 | 1/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.488317757009346,
"WHIP": 1.3598130841121496,
"IP": 142.2,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.284,
"recent_avg_IP": 4.8,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -1.0102,
"sample_weight": 1.0,
"run_prevention_factor": 1.0859,
"strikeout_factor": 0.9189,
"walk_factor": 0.928,
"homer_factor": 1.1775,
"regression_flag": "neutral",
"k_percent": 14.0,
"bb_percent": 5.5,
"woba": 0.364,
"xwoba": 0.384,
"barrel_percent": 12.0,
"hard_hit_percent": 43.2,
"whiff_percent": 18.8
},
"espn_rank": {
"rank": 139,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "608372",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.0,
"ER": 25.0,
"R": 25.0,
"H": 37.0,
"BB": 7.0,
"SO": 17.0,
"HR": 5.0,
"BF": 116.0,
"Pitches": 460.0
},
"per_game": {
"IP": 4.2,
"ER": 5.0,
"R": 5.0,
"H": 7.4,
"BB": 1.4,
"SO": 3.4,
"HR": 1.0,
"BF": 23.2,
"Pitches": 92.0
},
"rates": {
"ERA": 9.375,
"WHIP": 1.8333,
"ER_per_IP": 1.04167,
"H_per_IP": 1.54167,
"BB_per_IP": 0.29167,
"SO_per_IP": 0.70833,
"HR_per_IP": 0.20833
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.0,
"ER": 39.0,
"R": 40.0,
"H": 66.0,
"BB": 11.0,
"SO": 35.0,
"HR": 13.0,
"BF": 232.0,
"Pitches": 903.0
},
"per_game": {
"IP": 5.1,
"ER": 3.9,
"R": 4.0,
"H": 6.6,
"BB": 1.1,
"SO": 3.5,
"HR": 1.3,
"BF": 23.2,
"Pitches": 90.3
},
"rates": {
"ERA": 6.75,
"WHIP": 1.4808,
"ER_per_IP": 0.75,
"H_per_IP": 1.26923,
"BB_per_IP": 0.21154,
"SO_per_IP": 0.67308,
"HR_per_IP": 0.25
}
},
"season": {
"games": 27,
"totals": {
"IP": 142.2,
"ER": 87.0,
"R": 90.0,
"H": 160.0,
"BB": 34.0,
"SO": 86.0,
"HR": 31.0,
"BF": 614.0,
"Pitches": 2360.0
},
"per_game": {
"IP": 5.1,
"ER": 3.2222,
"R": 3.3333,
"H": 5.9259,
"BB": 1.2593,
"SO": 3.1852,
"HR": 1.1481,
"BF": 22.7407,
"Pitches": 87.4074
},
"rates": {
"ERA": 5.4883,
"WHIP": 1.3598,
"ER_per_IP": 0.60981,
"H_per_IP": 1.1215,
"BB_per_IP": 0.23832,
"SO_per_IP": 0.6028,
"HR_per_IP": 0.21729
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 4.021,
"predicted_H": 6.551,
"predicted_BB": 1.368,
"predicted_SO": 3.598,
"predicted_HR": 1.071,
"predicted_ERA": 7.1969,
"predicted_WHIP": 1.575
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.416,
"form_weight": 0.584,
"form_reliability": 0.8438,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 4.021,
"final": 3.1803,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 6.551,
"final": 5.9058,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.368,
"final": 1.6309,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 3.598,
"final": 2.5172,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.071,
"final": 1.0415,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 7.1969,
"final": 7.1969,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.575,
"final": 1.575,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 52.0,
"ER": 39,
"H": 66,
"BB": 11,
"SO": 35,
"HR": 13,
"ERA": 6.75,
"WHIP": 1.4807692307692308,
"K9": 6.0576923076923075,
"HR9": 2.25,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 1.2592029627801213,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 1.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 2,
"predicted_H": 5,
"predicted_BB": 2,
"predicted_SO": 1,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "608372",
"player_name": "Tomoyuki Sugano",
"position": "Starter",
"team": "COL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 1.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_SO": 1.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_R": 2.0,
"predicted_SO": 1.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "COL",
"games": 155,
"wins": 57,
"losses": 98,
"win_pct": 0.3677,
"runs_scored": 726.0,
"runs_allowed": 902.0,
"run_differential": -176.0,
"run_differential_per_game": -1.1355,
"avg_runs_scored": 4.6839,
"avg_runs_allowed": 5.8194,
"offense_index": 1.0438,
"defense_index": 0.7711,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 7.2,
"run_differential": -29.0
},
"available": true,
"quality_score": -0.3566
},
"opponent": {
"team": "SEA",
"games": 155,
"wins": 72,
"losses": 83,
"win_pct": 0.4645,
"runs_scored": 632.0,
"runs_allowed": 689.0,
"run_differential": -57.0,
"run_differential_per_game": -0.3677,
"avg_runs_scored": 4.0774,
"avg_runs_allowed": 4.4452,
"offense_index": 0.9086,
"defense_index": 1.0095,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.8,
"avg_runs_allowed": 3.9,
"run_differential": 19.0
},
"available": true,
"quality_score": -0.0752
},
"edges": {
"quality_edge": -0.2814,
"offense_edge": 0.0438,
"opponent_offense_edge": -0.0914,
"defense_strength": -0.2289,
"opponent_defense_weakness": -0.0095,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9855,
"run_prevention": 1.0223,
"strikeout": 0.9989
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "608372",
"profile": {
"available": true,
"pitcher_id": "608372",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 579.0,
"k_percent": 14.0,
"bb_percent": 5.5,
"woba": 0.364,
"xwoba": 0.384,
"sweet_spot_percent": 37.3,
"barrel_batted_rate": 12.0,
"hard_hit_percent": 43.2,
"avg_best_speed": 80.8337,
"avg_hyper_speed": 95.0873,
"whiff_percent": 18.8,
"swing_percent": 47.2
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -1.3904,
"command_and_miss": -0.6443,
"regression_edge": -0.5714,
"xwoba_edge": -2.0643,
"barrel_edge": -1.0667,
"hard_hit_edge": -0.7571,
"whiff_edge": -0.8857,
"bb_edge": 0.9,
"pitch_design_score": -0.0862
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "608372",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 92,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 88.31257099697747,
"release_spin_rate": 2299.981861685681,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 88.31257099697747,
"release_spin_rate": 2299.981861685681,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 88.3126,
"release_spin_rate": 2299.9819,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0862,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.6154,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -1.0102,
"sample_weight": 1.0,
"run_prevention_factor": 1.0859,
"strikeout_factor": 0.9189,
"walk_factor": 0.928,
"homer_factor": 1.1775,
"woba_minus_xwoba": -0.02,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "608372",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0859,
"adjusted": 4
},
"predicted_H": {
"original": 7.0,
"factor": 1.0859,
"adjusted": 8
},
"predicted_BB": {
"original": 1.0,
"factor": 0.928,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1775,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9189,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 1,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 91,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was -4."
}
],
"provenance": {
"prediction": "output/games/20260920_SEA@COL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_SF@LAD | away | Matt Wilkinson | Matt Wilkinson | True | 4.1 | 5.0 | 2 | 4 | 0 | -4 | 4/3 | 4/0 | 5/6 | Last 10 before this game (6 available){
"model_context": {
"embedded_season": {
"ERA": 4.576271186440677,
"WHIP": 1.11864406779661,
"IP": 19.2,
"games_started": null,
"games_pitched": 6,
"role_avg_IP": 3.667,
"recent_avg_IP": 3.667,
"last_start_IP": 3.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1602,
"sample_weight": 0.45,
"run_prevention_factor": 1.0136,
"strikeout_factor": 0.9604,
"walk_factor": 0.9622,
"homer_factor": 1.0355,
"regression_flag": "neutral",
"k_percent": 14.8,
"bb_percent": 4.9,
"woba": 0.307,
"xwoba": 0.318,
"barrel_percent": 7.7,
"hard_hit_percent": 49.2,
"whiff_percent": 16.8
},
"espn_rank": {
"rank": 647,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.8653846153846154,
"last_10": 0.1346153846153846
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5455,
"prior_weight": 0.4545
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "683363",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 6,
"reference_playing_time": 4.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 17.2,
"ER": 10.0,
"R": 13.0,
"H": 17.0,
"BB": 4.0,
"SO": 12.0,
"HR": 4.0,
"BF": 74.0,
"Pitches": 281.0
},
"per_game": {
"IP": 3.2,
"ER": 2.0,
"R": 2.6,
"H": 3.4,
"BB": 0.8,
"SO": 2.4,
"HR": 0.8,
"BF": 14.8,
"Pitches": 56.2
},
"rates": {
"ERA": 5.0943,
"WHIP": 1.1887,
"ER_per_IP": 0.56604,
"H_per_IP": 0.96226,
"BB_per_IP": 0.22642,
"SO_per_IP": 0.67925,
"HR_per_IP": 0.22642
}
},
"last_10": {
"games": 6,
"totals": {
"IP": 19.2,
"ER": 10.0,
"R": 13.0,
"H": 18.0,
"BB": 4.0,
"SO": 12.0,
"HR": 4.0,
"BF": 81.0,
"Pitches": 306.0
},
"per_game": {
"IP": 3.1,
"ER": 1.6667,
"R": 2.1667,
"H": 3.0,
"BB": 0.6667,
"SO": 2.0,
"HR": 0.6667,
"BF": 13.5,
"Pitches": 51.0
},
"rates": {
"ERA": 4.5763,
"WHIP": 1.1186,
"ER_per_IP": 0.50847,
"H_per_IP": 0.91525,
"BB_per_IP": 0.20339,
"SO_per_IP": 0.61017,
"HR_per_IP": 0.20339
}
},
"season": {
"games": 6,
"totals": {
"IP": 19.2,
"ER": 10.0,
"R": 13.0,
"H": 18.0,
"BB": 4.0,
"SO": 12.0,
"HR": 4.0,
"BF": 81.0,
"Pitches": 306.0
},
"per_game": {
"IP": 3.1,
"ER": 1.6667,
"R": 2.1667,
"H": 3.0,
"BB": 0.6667,
"SO": 2.0,
"HR": 0.6667,
"BF": 13.5,
"Pitches": 51.0
},
"rates": {
"ERA": 4.5763,
"WHIP": 1.1186,
"ER_per_IP": 0.50847,
"H_per_IP": 0.91525,
"BB_per_IP": 0.20339,
"SO_per_IP": 0.61017,
"HR_per_IP": 0.20339
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.0,
"predicted_ER": 2.117,
"predicted_H": 3.818,
"predicted_BB": 1.154,
"predicted_SO": 3.118,
"predicted_HR": 0.749,
"predicted_ERA": 4.8286,
"predicted_WHIP": 1.2603
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.542,
"form_weight": 0.458,
"form_reliability": 0.5455,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5455,
"prior_weight": 0.4545
},
"applied_metrics": {
"predicted_IP": {
"model": 4.1,
"form": 4.0,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 2.117,
"final": 3.6797,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.818,
"final": 3.9166,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.154,
"final": 2.6966,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.118,
"final": 4.1381,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.749,
"final": 0.343,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.8286,
"final": 4.8286,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2603,
"final": 1.2603,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 19.2,
"ER": 10,
"H": 18,
"BB": 4,
"SO": 12,
"HR": 4,
"ERA": 4.576271186440677,
"WHIP": 1.11864406779661,
"K9": 5.491525423728813,
"HR9": 1.830508474576271,
"games_pitched": 6,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 6,
"error_prone": false
},
"games_count": 6,
"latest_game_date": "2026-09-13T00:00:00"
},
"recent_form_boost": 1.0036428122954868,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.333333333333333,
"predicted_ER": 5.0,
"predicted_H": 4.0,
"predicted_BB": 4.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5455,
"prior_weight": 0.4545
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "683363",
"player_name": "Matt Wilkinson",
"position": "Starter",
"team": "SF",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 5.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.3333,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 5.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.1,
"predicted_R": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SF",
"games": 155,
"wins": 64,
"losses": 91,
"win_pct": 0.4129,
"runs_scored": 655.0,
"runs_allowed": 737.0,
"run_differential": -82.0,
"run_differential_per_game": -0.529,
"avg_runs_scored": 4.2258,
"avg_runs_allowed": 4.7548,
"offense_index": 0.9413,
"defense_index": 0.9442,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 5.5,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.1738
},
"opponent": {
"team": "LAD",
"games": 155,
"wins": 95,
"losses": 60,
"win_pct": 0.6129,
"runs_scored": 777.0,
"runs_allowed": 586.0,
"run_differential": 191.0,
"run_differential_per_game": 1.2323,
"avg_runs_scored": 5.0129,
"avg_runs_allowed": 3.7806,
"offense_index": 1.1166,
"defense_index": 1.1875,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.3,
"avg_runs_allowed": 2.8,
"run_differential": 35.0
},
"available": true,
"quality_score": 0.3169
},
"edges": {
"quality_edge": -0.4907,
"offense_edge": -0.0587,
"opponent_offense_edge": 0.1166,
"defense_strength": -0.0558,
"opponent_defense_weakness": -0.1875,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.974,
"run_prevention": 1.0488,
"strikeout": 0.976
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "683363",
"profile": {
"available": true,
"pitcher_id": "683363",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 71.0,
"k_percent": 14.8,
"bb_percent": 4.9,
"woba": 0.307,
"xwoba": 0.318,
"sweet_spot_percent": 30.8,
"barrel_batted_rate": 7.7,
"hard_hit_percent": 49.2,
"avg_best_speed": 81.211,
"avg_hyper_speed": 94.7802,
"whiff_percent": 16.8,
"swing_percent": 44.8
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2522,
"command_and_miss": -0.6629,
"regression_edge": -0.3143,
"xwoba_edge": -0.1786,
"barrel_edge": -0.1111,
"hard_hit_edge": -1.6143,
"whiff_edge": -1.1714,
"bb_edge": 1.05,
"pitch_design_score": -0.137
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "683363",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 53,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 53,
"pitch_usage": 0.0,
"release_speed": 87.40505179838082,
"release_spin_rate": 1996.1529621776074,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 53,
"pitch_usage": 0.0,
"release_speed": 87.40505179838082,
"release_spin_rate": 1996.1529621776074,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 87.4051,
"release_spin_rate": 1996.153,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.137,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.9784,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.1602,
"sample_weight": 0.45,
"run_prevention_factor": 1.0136,
"strikeout_factor": 0.9604,
"walk_factor": 0.9622,
"homer_factor": 1.0355,
"woba_minus_xwoba": -0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "683363",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0061,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0061,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.983,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.016,
"adjusted": 1
},
"predicted_SO": {
"original": 2.0,
"factor": 0.9822,
"adjusted": 2
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 4,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 4,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 91,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 6 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 4",
"detail": "Actual minus predicted earned runs was -4; this is the primary run-prevention error."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -4."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 4 ER."
}
],
"provenance": {
"prediction": "output/games/20260920_SF@LAD.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_SF@LAD | home | Jack Dreyer | Jack Dreyer | True | 5.0 | 1.0 | -12 | 2 | 1 | -1 | 5/1 | 2/1 | 4/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.185393258426966,
"WHIP": 1.1292134831460674,
"IP": 59.1,
"games_started": null,
"games_pitched": 63,
"role_avg_IP": 1.0,
"recent_avg_IP": 1.0,
"last_start_IP": 1.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.3476,
"sample_weight": 0.912,
"run_prevention_factor": 0.9705,
"strikeout_factor": 1.0474,
"walk_factor": 1.0,
"homer_factor": 1.0097,
"regression_flag": "neutral",
"k_percent": 28.1,
"bb_percent": 9.1,
"woba": 0.277,
"xwoba": 0.288,
"barrel_percent": 7.4,
"hard_hit_percent": 42.7,
"whiff_percent": 28.0
},
"espn_rank": {
"rank": 158,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 59.1,
"season_ERA": 3.185,
"season_WHIP": 1.129,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.059,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7069,
"prior_weight": 0.2931
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "676263",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 63,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 5.0,
"ER": 3.0,
"R": 3.0,
"H": 6.0,
"BB": 2.0,
"SO": 2.0,
"HR": 0.0,
"BF": 23.0,
"Pitches": 84.0
},
"per_game": {
"IP": 1.0,
"ER": 0.6,
"R": 0.6,
"H": 1.2,
"BB": 0.4,
"SO": 0.4,
"HR": 0.0,
"BF": 4.6,
"Pitches": 16.8
},
"rates": {
"ERA": 5.4,
"WHIP": 1.6,
"ER_per_IP": 0.6,
"H_per_IP": 1.2,
"BB_per_IP": 0.4,
"SO_per_IP": 0.4,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 8.0,
"ER": 4.0,
"R": 4.0,
"H": 9.0,
"BB": 6.0,
"SO": 6.0,
"HR": 0.0,
"BF": 38.0,
"Pitches": 149.0
},
"per_game": {
"IP": 0.2,
"ER": 0.4,
"R": 0.4,
"H": 0.9,
"BB": 0.6,
"SO": 0.6,
"HR": 0.0,
"BF": 3.8,
"Pitches": 14.9
},
"rates": {
"ERA": 4.5,
"WHIP": 1.875,
"ER_per_IP": 0.5,
"H_per_IP": 1.125,
"BB_per_IP": 0.75,
"SO_per_IP": 0.75,
"HR_per_IP": 0.0
}
},
"season": {
"games": 63,
"totals": {
"IP": 59.1,
"ER": 21.0,
"R": 21.0,
"H": 45.0,
"BB": 22.0,
"SO": 68.0,
"HR": 7.0,
"BF": 242.0,
"Pitches": 963.0
},
"per_game": {
"IP": 1.0,
"ER": 0.3333,
"R": 0.3333,
"H": 0.7143,
"BB": 0.3492,
"SO": 1.0794,
"HR": 0.1111,
"BF": 3.8413,
"Pitches": 15.2857
},
"rates": {
"ERA": 3.1854,
"WHIP": 1.1292,
"ER_per_IP": 0.35393,
"H_per_IP": 0.75843,
"BB_per_IP": 0.37079,
"SO_per_IP": 1.14607,
"HR_per_IP": 0.11798
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 2.1,
"predicted_ER": 1.175,
"predicted_H": 2.411,
"predicted_BB": 1.086,
"predicted_SO": 1.711,
"predicted_HR": 0.138,
"predicted_ERA": 4.6278,
"predicted_WHIP": 1.5304
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4738,
"form_weight": 0.5262,
"form_reliability": 0.7069,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.059,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7069,
"prior_weight": 0.2931
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 2.1,
"final": 4.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.175,
"final": 1.5659,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 2.411,
"final": 3.6378,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.086,
"final": 1.5191,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 1.711,
"final": 2.7956,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.138,
"final": 0.5464,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.6278,
"final": 4.6278,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5304,
"final": 1.5304,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 8.0,
"ER": 4,
"H": 9,
"BB": 6,
"SO": 6,
"HR": 0,
"ERA": 4.500000000000001,
"WHIP": 1.8750000000000002,
"K9": 6.750000000000001,
"HR9": 0.0,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-16T00:00:00"
},
"recent_form_boost": 1.0042122234630113,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.059,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7069,
"prior_weight": 0.2931
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 5,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 1
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 5,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "676263",
"player_name": "Jack Dreyer",
"position": "Starter",
"team": "LAD",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAD",
"games": 155,
"wins": 95,
"losses": 60,
"win_pct": 0.6129,
"runs_scored": 777.0,
"runs_allowed": 586.0,
"run_differential": 191.0,
"run_differential_per_game": 1.2323,
"avg_runs_scored": 5.0129,
"avg_runs_allowed": 3.7806,
"offense_index": 1.1166,
"defense_index": 1.1875,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.3,
"avg_runs_allowed": 2.8,
"run_differential": 35.0
},
"available": true,
"quality_score": 0.3169
},
"opponent": {
"team": "SF",
"games": 155,
"wins": 64,
"losses": 91,
"win_pct": 0.4129,
"runs_scored": 655.0,
"runs_allowed": 737.0,
"run_differential": -82.0,
"run_differential_per_game": -0.529,
"avg_runs_scored": 4.2258,
"avg_runs_allowed": 4.7548,
"offense_index": 0.9413,
"defense_index": 0.9442,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 5.5,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.1738
},
"edges": {
"quality_edge": 0.4907,
"offense_edge": 0.1166,
"opponent_offense_edge": -0.0587,
"defense_strength": 0.1875,
"opponent_defense_weakness": 0.0558,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0276,
"run_prevention": 0.9473,
"strikeout": 1.0194
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "676263",
"profile": {
"available": true,
"pitcher_id": "676263",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 228.0,
"k_percent": 28.1,
"bb_percent": 9.1,
"woba": 0.277,
"xwoba": 0.288,
"sweet_spot_percent": 24.0,
"barrel_batted_rate": 7.4,
"hard_hit_percent": 42.7,
"avg_best_speed": 78.3179,
"avg_hyper_speed": 94.9126,
"whiff_percent": 28.0,
"swing_percent": 48.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.4835,
"command_and_miss": 0.5421,
"regression_edge": -0.3143,
"xwoba_edge": 0.6786,
"barrel_edge": -0.0444,
"hard_hit_edge": -0.6857,
"whiff_edge": 0.4286,
"bb_edge": 0.0,
"pitch_design_score": 0.0108
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "676263",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 15,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 15,
"pitch_usage": 0.0,
"release_speed": 90.04440654772824,
"release_spin_rate": 2459.534983303308,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 15,
"pitch_usage": 0.0,
"release_speed": 90.04440654772824,
"release_spin_rate": 2459.534983303308,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 90.0444,
"release_spin_rate": 2459.535,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.0108,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0774,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.3476,
"sample_weight": 0.912,
"run_prevention_factor": 0.9705,
"strikeout_factor": 1.0474,
"walk_factor": 1.0,
"homer_factor": 1.0097,
"woba_minus_xwoba": -0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "676263",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 0.0,
"factor": 0.9731,
"adjusted": 0
},
"predicted_H": {
"original": 0.0,
"factor": 0.9731,
"adjusted": 0
},
"predicted_BB": {
"original": 0.0,
"factor": 1.0,
"adjusted": 0
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0088,
"adjusted": 0
},
"predicted_SO": {
"original": 14.0,
"factor": 1.0432,
"adjusted": 15
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 86,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -12 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was -4."
}
],
"provenance": {
"prediction": "output/games/20260920_SF@LAD.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_TOR@TEX | away | Spencer Miles | Spencer Miles | True | 6.0 | 3.0 | -9 | 3 | 0 | -3 | 2/2 | 1/0 | 3/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.650909090909091,
"WHIP": 1.0909090909090908,
"IP": 91.2,
"games_started": null,
"games_pitched": 47,
"role_avg_IP": 2.714,
"recent_avg_IP": 2.6,
"last_start_IP": 2.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.5303,
"sample_weight": 1.0,
"run_prevention_factor": 0.9549,
"strikeout_factor": 0.9737,
"walk_factor": 0.948,
"homer_factor": 0.8773,
"regression_flag": "neutral",
"k_percent": 23.5,
"bb_percent": 6.5,
"woba": 0.256,
"xwoba": 0.268,
"barrel_percent": 3.5,
"hard_hit_percent": 34.5,
"whiff_percent": 18.9
},
"espn_rank": {
"rank": 60,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 6.0,
"season_IP": 91.2,
"season_ERA": 2.651,
"season_WHIP": 1.091,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.631,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7884,
"prior_weight": 0.2116
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "693686",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 47,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 8.1,
"ER": 0.0,
"R": 0.0,
"H": 6.0,
"BB": 3.0,
"SO": 10.0,
"HR": 0.0,
"BF": 34.0,
"Pitches": 135.0
},
"per_game": {
"IP": 1.2,
"ER": 0.0,
"R": 0.0,
"H": 1.2,
"BB": 0.6,
"SO": 2.0,
"HR": 0.0,
"BF": 6.8,
"Pitches": 27.0
},
"rates": {
"ERA": 0.0,
"WHIP": 1.08,
"ER_per_IP": 0.0,
"H_per_IP": 0.72,
"BB_per_IP": 0.36,
"SO_per_IP": 1.2,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 13.2,
"ER": 0.0,
"R": 0.0,
"H": 8.0,
"BB": 4.0,
"SO": 14.0,
"HR": 0.0,
"BF": 54.0,
"Pitches": 211.0
},
"per_game": {
"IP": 1.1,
"ER": 0.0,
"R": 0.0,
"H": 0.8,
"BB": 0.4,
"SO": 1.4,
"HR": 0.0,
"BF": 5.4,
"Pitches": 21.1
},
"rates": {
"ERA": 0.0,
"WHIP": 0.878,
"ER_per_IP": 0.0,
"H_per_IP": 0.58537,
"BB_per_IP": 0.29268,
"SO_per_IP": 1.02439,
"HR_per_IP": 0.0
}
},
"season": {
"games": 47,
"totals": {
"IP": 91.2,
"ER": 27.0,
"R": 29.0,
"H": 76.0,
"BB": 24.0,
"SO": 87.0,
"HR": 5.0,
"BF": 370.0,
"Pitches": 1429.0
},
"per_game": {
"IP": 2.0,
"ER": 0.5745,
"R": 0.617,
"H": 1.617,
"BB": 0.5106,
"SO": 1.8511,
"HR": 0.1064,
"BF": 7.8723,
"Pitches": 30.4043
},
"rates": {
"ERA": 2.6509,
"WHIP": 1.0909,
"ER_per_IP": 0.29455,
"H_per_IP": 0.82909,
"BB_per_IP": 0.26182,
"SO_per_IP": 0.94909,
"HR_per_IP": 0.05455
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 2.2,
"predicted_ER": 0.393,
"predicted_H": 1.922,
"predicted_BB": 0.838,
"predicted_SO": 2.686,
"predicted_HR": 0.102,
"predicted_ERA": 1.3899,
"predicted_WHIP": 1.0847
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4394,
"form_weight": 0.5606,
"form_reliability": 0.7884,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.631,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7884,
"prior_weight": 0.2116
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 2.2,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 0.393,
"final": 1.5385,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 1.922,
"final": 1.9563,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 0.838,
"final": 0.9092,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 2.686,
"final": 2.824,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.102,
"final": 0.4966,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 1.3899,
"final": 1.3899,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0847,
"final": 1.0847,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 13.2,
"ER": 0,
"H": 8,
"BB": 4,
"SO": 14,
"HR": 0,
"ERA": 0.0,
"WHIP": 0.8780487804878048,
"K9": 9.21951219512195,
"HR9": 0.0,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": true,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-16T00:00:00"
},
"recent_form_boost": 0.7673108560621595,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3.0,
"predicted_H": 2.0,
"predicted_BB": 1.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.631,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7884,
"prior_weight": 0.2116
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 2,
"predicted_H": 2,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "693686",
"player_name": "Spencer Miles",
"position": "Starter",
"team": "TOR",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TOR",
"games": 155,
"wins": 76,
"losses": 79,
"win_pct": 0.4903,
"runs_scored": 622.0,
"runs_allowed": 669.0,
"run_differential": -47.0,
"run_differential_per_game": -0.3032,
"avg_runs_scored": 4.0129,
"avg_runs_allowed": 4.3161,
"offense_index": 0.8936,
"defense_index": 1.0405,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 4.5,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.0804
},
"opponent": {
"team": "TEX",
"games": 155,
"wins": 78,
"losses": 77,
"win_pct": 0.5032,
"runs_scored": 651.0,
"runs_allowed": 680.0,
"run_differential": -29.0,
"run_differential_per_game": -0.1871,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 4.3871,
"offense_index": 0.9352,
"defense_index": 1.0237,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 3.6,
"run_differential": 10.0
},
"available": true,
"quality_score": 0.0148
},
"edges": {
"quality_edge": -0.0952,
"offense_edge": -0.1064,
"opponent_offense_edge": -0.0648,
"defense_strength": 0.0405,
"opponent_defense_weakness": -0.0237,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 1.0,
"run_prevention": 0.9903,
"strikeout": 1.0023
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "693686",
"profile": {
"available": true,
"pitcher_id": "693686",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 357.0,
"k_percent": 23.5,
"bb_percent": 6.5,
"woba": 0.256,
"xwoba": 0.268,
"sweet_spot_percent": 28.7,
"barrel_batted_rate": 3.5,
"hard_hit_percent": 34.5,
"avg_best_speed": 75.7362,
"avg_hyper_speed": 92.9442,
"whiff_percent": 18.9,
"swing_percent": 47.9
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 1.0327,
"command_and_miss": -0.0786,
"regression_edge": -0.3429,
"xwoba_edge": 1.25,
"barrel_edge": 0.8222,
"hard_hit_edge": 0.4857,
"whiff_edge": -0.8714,
"bb_edge": 0.65,
"pitch_design_score": 0.0835
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "693686",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 23,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 23,
"pitch_usage": 0.0,
"release_speed": 91.34123223383122,
"release_spin_rate": 2452.3646237314592,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 23,
"pitch_usage": 0.0,
"release_speed": 91.34123223383122,
"release_spin_rate": 2452.3646237314592,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 91.3412,
"release_spin_rate": 2452.3646,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.0835,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.5961,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.5303,
"sample_weight": 1.0,
"run_prevention_factor": 0.9549,
"strikeout_factor": 0.9737,
"walk_factor": 0.948,
"homer_factor": 0.8773,
"woba_minus_xwoba": -0.012,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "693686",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9549,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9549,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.948,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.8773,
"adjusted": 0
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9737,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"Pitches": 98,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -9 outs from the projected workload."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260920_TOR@TEX.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_TOR@TEX | home | Jacob deGrom | Jacob deGrom | True | 5.2 | 4.1 | -4 | 2 | 3 | 1 | 4/5 | 2/4 | 7/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.7904967602591793,
"WHIP": 1.0691144708423326,
"IP": 154.1,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.322,
"recent_avg_IP": 5.533,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4313,
"sample_weight": 1.0,
"run_prevention_factor": 0.9633,
"strikeout_factor": 1.1029,
"walk_factor": 0.944,
"homer_factor": 1.0392,
"regression_flag": "neutral",
"k_percent": 31.2,
"bb_percent": 6.3,
"woba": 0.276,
"xwoba": 0.284,
"barrel_percent": 8.3,
"hard_hit_percent": 45.5,
"whiff_percent": 33.8
},
"espn_rank": {
"rank": 57,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 154.1,
"season_ERA": 3.79,
"season_WHIP": 1.069,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "594798",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.2,
"ER": 12.0,
"R": 12.0,
"H": 15.0,
"BB": 7.0,
"SO": 37.0,
"HR": 3.0,
"BF": 104.0,
"Pitches": 446.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.4,
"H": 3.0,
"BB": 1.4,
"SO": 7.4,
"HR": 0.6,
"BF": 20.8,
"Pitches": 89.2
},
"rates": {
"ERA": 3.9036,
"WHIP": 0.7952,
"ER_per_IP": 0.43373,
"H_per_IP": 0.54217,
"BB_per_IP": 0.25301,
"SO_per_IP": 1.33735,
"HR_per_IP": 0.10843
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.0,
"ER": 21.0,
"R": 21.0,
"H": 39.0,
"BB": 15.0,
"SO": 66.0,
"HR": 4.0,
"BF": 198.0,
"Pitches": 862.0
},
"per_game": {
"IP": 5.0,
"ER": 2.1,
"R": 2.1,
"H": 3.9,
"BB": 1.5,
"SO": 6.6,
"HR": 0.4,
"BF": 19.8,
"Pitches": 86.2
},
"rates": {
"ERA": 3.8571,
"WHIP": 1.102,
"ER_per_IP": 0.42857,
"H_per_IP": 0.79592,
"BB_per_IP": 0.30612,
"SO_per_IP": 1.34694,
"HR_per_IP": 0.08163
}
},
"season": {
"games": 29,
"totals": {
"IP": 154.1,
"ER": 65.0,
"R": 65.0,
"H": 126.0,
"BB": 39.0,
"SO": 194.0,
"HR": 20.0,
"BF": 622.0,
"Pitches": 2564.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2414,
"R": 2.2414,
"H": 4.3448,
"BB": 1.3448,
"SO": 6.6897,
"HR": 0.6897,
"BF": 21.4483,
"Pitches": 88.4138
},
"rates": {
"ERA": 3.7905,
"WHIP": 1.0691,
"ER_per_IP": 0.42117,
"H_per_IP": 0.81641,
"BB_per_IP": 0.2527,
"SO_per_IP": 1.25702,
"HR_per_IP": 0.12959
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.388,
"predicted_H": 3.947,
"predicted_BB": 1.552,
"predicted_SO": 6.857,
"predicted_HR": 0.596,
"predicted_ERA": 3.9719,
"predicted_WHIP": 1.0162
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4121,
"form_weight": 0.5879,
"form_reliability": 0.8529,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.388,
"final": 2.2281,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.947,
"final": 3.9688,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.552,
"final": 1.7366,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 6.857,
"final": 6.9159,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.596,
"final": 1.1747,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.9719,
"final": 3.9719,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0162,
"final": 1.0162,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 49.0,
"ER": 21,
"H": 39,
"BB": 15,
"SO": 66,
"HR": 4,
"ERA": 3.857142857142857,
"WHIP": 1.1020408163265305,
"K9": 12.122448979591837,
"HR9": 0.7346938775510204,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.9242883238476254,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 2.0,
"predicted_SO": 7.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "594798",
"player_name": "Jacob deGrom",
"position": "Starter",
"team": "TEX",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 5.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 0,
"deboosted_metrics": 2,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 5.2,
"predicted_R": 2.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_HR",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TEX",
"games": 155,
"wins": 78,
"losses": 77,
"win_pct": 0.5032,
"runs_scored": 651.0,
"runs_allowed": 680.0,
"run_differential": -29.0,
"run_differential_per_game": -0.1871,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 4.3871,
"offense_index": 0.9352,
"defense_index": 1.0237,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 3.6,
"run_differential": 10.0
},
"available": true,
"quality_score": 0.0148
},
"opponent": {
"team": "TOR",
"games": 155,
"wins": 76,
"losses": 79,
"win_pct": 0.4903,
"runs_scored": 622.0,
"runs_allowed": 669.0,
"run_differential": -47.0,
"run_differential_per_game": -0.3032,
"avg_runs_scored": 4.0129,
"avg_runs_allowed": 4.3161,
"offense_index": 0.8936,
"defense_index": 1.0405,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 4.5,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.0804
},
"edges": {
"quality_edge": 0.0952,
"offense_edge": -0.0648,
"opponent_offense_edge": -0.1064,
"defense_strength": 0.0237,
"opponent_defense_weakness": -0.0405,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0088,
"run_prevention": 0.9758,
"strikeout": 1.0114
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "594798",
"profile": {
"available": true,
"pitcher_id": "594798",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 597.0,
"k_percent": 31.2,
"bb_percent": 6.3,
"woba": 0.276,
"xwoba": 0.284,
"sweet_spot_percent": 37.7,
"barrel_batted_rate": 8.3,
"hard_hit_percent": 45.5,
"avg_best_speed": 80.5977,
"avg_hyper_speed": 94.716,
"whiff_percent": 33.8,
"swing_percent": 51.5
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.241,
"command_and_miss": 1.1714,
"regression_edge": -0.2286,
"xwoba_edge": 0.7929,
"barrel_edge": -0.2444,
"hard_hit_edge": -1.0857,
"whiff_edge": 1.2571,
"bb_edge": 0.7,
"pitch_design_score": 0.1831
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "594798",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 89,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 89,
"pitch_usage": 0.0,
"release_speed": 93.12098050726556,
"release_spin_rate": 2431.696781055929,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 89,
"pitch_usage": 0.0,
"release_speed": 93.12098050726556,
"release_spin_rate": 2431.696781055929,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 93.121,
"release_spin_rate": 2431.6968,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1831,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.308,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.4313,
"sample_weight": 1.0,
"run_prevention_factor": 0.9633,
"strikeout_factor": 1.1029,
"walk_factor": 0.944,
"homer_factor": 1.0392,
"woba_minus_xwoba": -0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "594798",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9633,
"adjusted": 2
},
"predicted_H": {
"original": 3.0,
"factor": 0.9633,
"adjusted": 3
},
"predicted_BB": {
"original": 1.0,
"factor": 0.944,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0392,
"adjusted": 1
},
"predicted_SO": {
"original": 7.0,
"factor": 1.1029,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 23,
"Pitches": 100,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260920_TOR@TEX.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_WAS@STL | away | Jake Irvin | Jake Irvin | True | 5.0 | 5.1 | 1 | 2 | 2 | 0 | 3/3 | 2/0 | 6/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.5121107266435985,
"WHIP": 1.411764705882353,
"IP": 96.1,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 4.807,
"recent_avg_IP": 5.2,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.5247,
"sample_weight": 1.0,
"run_prevention_factor": 1.0446,
"strikeout_factor": 0.9943,
"walk_factor": 1.034,
"homer_factor": 1.1414,
"regression_flag": "neutral",
"k_percent": 22.5,
"bb_percent": 10.8,
"woba": 0.339,
"xwoba": 0.352,
"barrel_percent": 10.9,
"hard_hit_percent": 45.1,
"whiff_percent": 23.5
},
"espn_rank": {
"rank": 718,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663623",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 13.0,
"R": 13.0,
"H": 24.0,
"BB": 15.0,
"SO": 24.0,
"HR": 5.0,
"BF": 113.0,
"Pitches": 462.0
},
"per_game": {
"IP": 5.0,
"ER": 2.6,
"R": 2.6,
"H": 4.8,
"BB": 3.0,
"SO": 4.8,
"HR": 1.0,
"BF": 22.6,
"Pitches": 92.4
},
"rates": {
"ERA": 4.68,
"WHIP": 1.56,
"ER_per_IP": 0.52,
"H_per_IP": 0.96,
"BB_per_IP": 0.6,
"SO_per_IP": 0.96,
"HR_per_IP": 0.2
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.2,
"ER": 29.0,
"R": 29.0,
"H": 42.0,
"BB": 25.0,
"SO": 45.0,
"HR": 10.0,
"BF": 214.0,
"Pitches": 872.0
},
"per_game": {
"IP": 5.0,
"ER": 2.9,
"R": 2.9,
"H": 4.2,
"BB": 2.5,
"SO": 4.5,
"HR": 1.0,
"BF": 21.4,
"Pitches": 87.2
},
"rates": {
"ERA": 5.255,
"WHIP": 1.349,
"ER_per_IP": 0.58389,
"H_per_IP": 0.84564,
"BB_per_IP": 0.50336,
"SO_per_IP": 0.90604,
"HR_per_IP": 0.20134
}
},
"season": {
"games": 20,
"totals": {
"IP": 96.1,
"ER": 59.0,
"R": 63.0,
"H": 90.0,
"BB": 46.0,
"SO": 96.0,
"HR": 17.0,
"BF": 426.0,
"Pitches": 1741.0
},
"per_game": {
"IP": 4.2,
"ER": 2.95,
"R": 3.15,
"H": 4.5,
"BB": 2.3,
"SO": 4.8,
"HR": 0.85,
"BF": 21.3,
"Pitches": 87.05
},
"rates": {
"ERA": 5.5121,
"WHIP": 1.4118,
"ER_per_IP": 0.61246,
"H_per_IP": 0.93426,
"BB_per_IP": 0.47751,
"SO_per_IP": 0.99654,
"HR_per_IP": 0.17647
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.761,
"predicted_H": 4.654,
"predicted_BB": 2.549,
"predicted_SO": 4.741,
"predicted_HR": 0.935,
"predicted_ERA": 4.9568,
"predicted_WHIP": 1.4367
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4345,
"form_weight": 0.5655,
"form_reliability": 0.8,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.0,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.761,
"final": 2.4303,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.654,
"final": 3.9353,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.549,
"final": 2.3105,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.741,
"final": 5.288,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.935,
"final": 0.9632,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.9568,
"final": 4.9568,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4367,
"final": 1.4367,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 49.2,
"ER": 29,
"H": 42,
"BB": 25,
"SO": 45,
"HR": 10,
"ERA": 5.25503355704698,
"WHIP": 1.3489932885906042,
"K9": 8.154362416107382,
"HR9": 1.8120805369127517,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-13T00:00:00"
},
"recent_form_boost": 1.0877248393934411,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_BB": 2.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 3,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663623",
"player_name": "Jake Irvin",
"position": "Starter",
"team": "WAS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.3333,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "WAS",
"games": 155,
"wins": 73,
"losses": 82,
"win_pct": 0.471,
"runs_scored": 795.0,
"runs_allowed": 781.0,
"run_differential": 14.0,
"run_differential_per_game": 0.0903,
"avg_runs_scored": 5.129,
"avg_runs_allowed": 5.0387,
"offense_index": 1.1421,
"defense_index": 0.8913,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.2,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.0214
},
"opponent": {
"team": "STL",
"games": 155,
"wins": 75,
"losses": 80,
"win_pct": 0.4839,
"runs_scored": 699.0,
"runs_allowed": 724.0,
"run_differential": -25.0,
"run_differential_per_game": -0.1613,
"avg_runs_scored": 4.5097,
"avg_runs_allowed": 4.671,
"offense_index": 1.0042,
"defense_index": 0.9615,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 5.3,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.1034
},
"edges": {
"quality_edge": 0.1248,
"offense_edge": 0.1421,
"opponent_offense_edge": 0.0042,
"defense_strength": -0.1087,
"opponent_defense_weakness": 0.0385,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0016,
"run_prevention": 1.0053,
"strikeout": 1.0034
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663623",
"profile": {
"available": true,
"pitcher_id": "663623",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 406.0,
"k_percent": 22.5,
"bb_percent": 10.8,
"woba": 0.339,
"xwoba": 0.352,
"sweet_spot_percent": 34.5,
"barrel_batted_rate": 10.9,
"hard_hit_percent": 45.1,
"avg_best_speed": 77.6025,
"avg_hyper_speed": 94.8634,
"whiff_percent": 23.5,
"swing_percent": 46.4
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.7913,
"command_and_miss": -0.1279,
"regression_edge": -0.3714,
"xwoba_edge": -1.15,
"barrel_edge": -0.8222,
"hard_hit_edge": -1.0286,
"whiff_edge": -0.2143,
"bb_edge": -0.425,
"pitch_design_score": -0.1401
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663623",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 96,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 96,
"pitch_usage": 0.0,
"release_speed": 87.34919578737016,
"release_spin_rate": 2366.528842737133,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 96,
"pitch_usage": 0.0,
"release_speed": 87.34919578737016,
"release_spin_rate": 2366.528842737133,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 87.3492,
"release_spin_rate": 2366.5288,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1401,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.0007,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.5247,
"sample_weight": 1.0,
"run_prevention_factor": 1.0446,
"strikeout_factor": 0.9943,
"walk_factor": 1.034,
"homer_factor": 1.1414,
"woba_minus_xwoba": -0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "663623",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0446,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0446,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 1.034,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1414,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9943,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 20,
"Pitches": 80,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260920_WAS@STL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260920 | 20260920_WAS@STL | home | Quinn Mathews | Quinn Mathews | True | 5.2 | 7.0 | 4 | 4 | 3 | -1 | 4/7 | 3/2 | 9/3 | Last 10 before this game (7 available){
"model_context": {
"embedded_season": {
"ERA": 3.6160714285714284,
"WHIP": 1.3928571428571428,
"IP": 37.1,
"games_started": null,
"games_pitched": 7,
"role_avg_IP": 5.333,
"recent_avg_IP": 5.667,
"last_start_IP": 6.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2136,
"sample_weight": 0.548,
"run_prevention_factor": 0.9818,
"strikeout_factor": 1.0081,
"walk_factor": 1.0088,
"homer_factor": 0.9278,
"regression_flag": "neutral",
"k_percent": 22.2,
"bb_percent": 9.9,
"woba": 0.308,
"xwoba": 0.288,
"barrel_percent": 2.8,
"hard_hit_percent": 32.1,
"whiff_percent": 27.4
},
"espn_rank": {
"rank": 225,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.7627118644067797,
"last_10": 0.23728813559322032
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "687273",
"report_date": "20260920",
"season_year": 2026,
"rows_used": 7,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.1,
"ER": 12.0,
"R": 12.0,
"H": 28.0,
"BB": 10.0,
"SO": 26.0,
"HR": 2.0,
"BF": 121.0,
"Pitches": 498.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.4,
"H": 5.6,
"BB": 2.0,
"SO": 5.2,
"HR": 0.4,
"BF": 24.2,
"Pitches": 99.6
},
"rates": {
"ERA": 3.8118,
"WHIP": 1.3412,
"ER_per_IP": 0.42353,
"H_per_IP": 0.98824,
"BB_per_IP": 0.35294,
"SO_per_IP": 0.91765,
"HR_per_IP": 0.07059
}
},
"last_10": {
"games": 7,
"totals": {
"IP": 37.1,
"ER": 15.0,
"R": 15.0,
"H": 36.0,
"BB": 16.0,
"SO": 36.0,
"HR": 3.0,
"BF": 162.0,
"Pitches": 690.0
},
"per_game": {
"IP": 5.1,
"ER": 2.1429,
"R": 2.1429,
"H": 5.1429,
"BB": 2.2857,
"SO": 5.1429,
"HR": 0.4286,
"BF": 23.1429,
"Pitches": 98.5714
},
"rates": {
"ERA": 3.6161,
"WHIP": 1.3929,
"ER_per_IP": 0.40179,
"H_per_IP": 0.96429,
"BB_per_IP": 0.42857,
"SO_per_IP": 0.96429,
"HR_per_IP": 0.08036
}
},
"season": {
"games": 7,
"totals": {
"IP": 37.1,
"ER": 15.0,
"R": 15.0,
"H": 36.0,
"BB": 16.0,
"SO": 36.0,
"HR": 3.0,
"BF": 162.0,
"Pitches": 690.0
},
"per_game": {
"IP": 5.1,
"ER": 2.1429,
"R": 2.1429,
"H": 5.1429,
"BB": 2.2857,
"SO": 5.1429,
"HR": 0.4286,
"BF": 23.1429,
"Pitches": 98.5714
},
"rates": {
"ERA": 3.6161,
"WHIP": 1.3929,
"ER_per_IP": 0.40179,
"H_per_IP": 0.96429,
"BB_per_IP": 0.42857,
"SO_per_IP": 0.96429,
"HR_per_IP": 0.08036
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.567,
"predicted_H": 5.521,
"predicted_BB": 2.096,
"predicted_SO": 5.235,
"predicted_HR": 0.589,
"predicted_ERA": 4.1104,
"predicted_WHIP": 1.3552
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5261,
"form_weight": 0.4739,
"form_reliability": 0.5833,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.567,
"final": 3.3208,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.521,
"final": 4.7209,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.096,
"final": 2.5716,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 9.0,
"form": 5.235,
"final": 7.2156,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.589,
"final": 1.3313,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1104,
"final": 4.1104,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3552,
"final": 1.3552,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 37.1,
"ER": 15,
"H": 36,
"BB": 16,
"SO": 36,
"HR": 3,
"ERA": 3.6160714285714284,
"WHIP": 1.3928571428571428,
"K9": 8.678571428571429,
"HR9": 0.7232142857142857,
"games_pitched": 7,
"quality_starts": 2,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 7,
"error_prone": false
},
"games_count": 7,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 0.904438196296605,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 9.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "687273",
"player_name": "Quinn Mathews",
"position": "Starter",
"team": "STL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 5.6667,
"predicted_SO": 9.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 5.2,
"predicted_R": 4.0,
"predicted_SO": 9.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "STL",
"games": 155,
"wins": 75,
"losses": 80,
"win_pct": 0.4839,
"runs_scored": 699.0,
"runs_allowed": 724.0,
"run_differential": -25.0,
"run_differential_per_game": -0.1613,
"avg_runs_scored": 4.5097,
"avg_runs_allowed": 4.671,
"offense_index": 1.0042,
"defense_index": 0.9615,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 5.3,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.1034
},
"opponent": {
"team": "WAS",
"games": 155,
"wins": 73,
"losses": 82,
"win_pct": 0.471,
"runs_scored": 795.0,
"runs_allowed": 781.0,
"run_differential": 14.0,
"run_differential_per_game": 0.0903,
"avg_runs_scored": 5.129,
"avg_runs_allowed": 5.0387,
"offense_index": 1.1421,
"defense_index": 0.8913,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.2,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.0214
},
"edges": {
"quality_edge": -0.1248,
"offense_edge": 0.0042,
"opponent_offense_edge": 0.1421,
"defense_strength": -0.0385,
"opponent_defense_weakness": 0.1087,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9882,
"run_prevention": 1.0328,
"strikeout": 0.9849
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "687273",
"profile": {
"available": true,
"pitcher_id": "687273",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 137.0,
"k_percent": 22.2,
"bb_percent": 9.9,
"woba": 0.308,
"xwoba": 0.288,
"sweet_spot_percent": 32.1,
"barrel_batted_rate": 2.8,
"hard_hit_percent": 32.1,
"avg_best_speed": 76.8211,
"avg_hyper_speed": 93.3668,
"whiff_percent": 27.4,
"swing_percent": 44.9
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3117,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6659,
"avg_hyper_speed": 93.9097,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.571,
"command_and_miss": 0.0929,
"regression_edge": 0.5714,
"xwoba_edge": 0.6786,
"barrel_edge": 0.9778,
"hard_hit_edge": 0.8286,
"whiff_edge": 0.3429,
"bb_edge": -0.2,
"pitch_design_score": -0.1406
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687273",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 98,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 98,
"pitch_usage": 0.0,
"release_speed": 87.34025750789307,
"release_spin_rate": 2134.7872003954303,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 98,
"pitch_usage": 0.0,
"release_speed": 87.34025750789307,
"release_spin_rate": 2134.7872003954303,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 87.3403,
"release_spin_rate": 2134.7872,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1406,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.0043,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.2136,
"sample_weight": 0.548,
"run_prevention_factor": 0.9818,
"strikeout_factor": 1.0081,
"walk_factor": 1.0088,
"homer_factor": 0.9278,
"woba_minus_xwoba": 0.02,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "687273",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.99,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 0.99,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0048,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9604,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0044,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 3,
"predicted_SO": 9,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 24,
"Pitches": 107,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 7 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260920_WAS@STL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |