| 20260903 | 20260903_BOS@BAL | away | Jake Bennett | Jake Bennett | True | 5.2 | 6.0 | 1 | 3 | 3 | 0 | 4/5 | 3/0 | 7/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.2669039145907472,
"WHIP": 1.0355871886120995,
"IP": 93.2,
"games_started": null,
"games_pitched": 16,
"role_avg_IP": 5.854,
"recent_avg_IP": 5.6,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.3699,
"sample_weight": 1.0,
"run_prevention_factor": 0.9686,
"strikeout_factor": 0.9846,
"walk_factor": 0.914,
"homer_factor": 0.9503,
"regression_flag": "neutral",
"k_percent": 19.8,
"bb_percent": 4.8,
"woba": 0.262,
"xwoba": 0.277,
"barrel_percent": 6.5,
"hard_hit_percent": 36.7,
"whiff_percent": 24.6
},
"espn_rank": {
"rank": 85,
"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": 16.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7619,
"prior_weight": 0.2381
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "687562",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 16,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.0,
"ER": 14.0,
"R": 15.0,
"H": 26.0,
"BB": 7.0,
"SO": 28.0,
"HR": 2.0,
"BF": 117.0,
"Pitches": 425.0
},
"per_game": {
"IP": 5.2,
"ER": 2.8,
"R": 3.0,
"H": 5.2,
"BB": 1.4,
"SO": 5.6,
"HR": 0.4,
"BF": 23.4,
"Pitches": 85.0
},
"rates": {
"ERA": 4.5,
"WHIP": 1.1786,
"ER_per_IP": 0.5,
"H_per_IP": 0.92857,
"BB_per_IP": 0.25,
"SO_per_IP": 1.0,
"HR_per_IP": 0.07143
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.2,
"ER": 22.0,
"R": 23.0,
"H": 51.0,
"BB": 11.0,
"SO": 49.0,
"HR": 5.0,
"BF": 244.0,
"Pitches": 834.0
},
"per_game": {
"IP": 6.0,
"ER": 2.2,
"R": 2.3,
"H": 5.1,
"BB": 1.1,
"SO": 4.9,
"HR": 0.5,
"BF": 24.4,
"Pitches": 83.4
},
"rates": {
"ERA": 3.2637,
"WHIP": 1.022,
"ER_per_IP": 0.36264,
"H_per_IP": 0.84066,
"BB_per_IP": 0.18132,
"SO_per_IP": 0.80769,
"HR_per_IP": 0.08242
}
},
"season": {
"games": 16,
"totals": {
"IP": 93.2,
"ER": 34.0,
"R": 35.0,
"H": 79.0,
"BB": 18.0,
"SO": 74.0,
"HR": 7.0,
"BF": 373.0,
"Pitches": 1316.0
},
"per_game": {
"IP": 6.0,
"ER": 2.125,
"R": 2.1875,
"H": 4.9375,
"BB": 1.125,
"SO": 4.625,
"HR": 0.4375,
"BF": 23.3125,
"Pitches": 82.25
},
"rates": {
"ERA": 3.2669,
"WHIP": 1.0356,
"ER_per_IP": 0.36299,
"H_per_IP": 0.84342,
"BB_per_IP": 0.19217,
"SO_per_IP": 0.79004,
"HR_per_IP": 0.07473
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.566,
"predicted_H": 5.242,
"predicted_BB": 1.461,
"predicted_SO": 5.239,
"predicted_HR": 0.539,
"predicted_ERA": 3.9772,
"predicted_WHIP": 1.1543
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4506,
"form_weight": 0.5494,
"form_reliability": 0.7619,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7619,
"prior_weight": 0.2381
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.566,
"final": 3.2122,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.242,
"final": 4.6824,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.461,
"final": 2.1545,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 5.239,
"final": 6.0325,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.539,
"final": 0.7467,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.9772,
"final": 3.9772,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1543,
"final": 1.1543,
"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": 60.2,
"ER": 22,
"H": 51,
"BB": 11,
"SO": 49,
"HR": 5,
"ERA": 3.2637362637362637,
"WHIP": 1.0219780219780221,
"K9": 7.269230769230769,
"HR9": 0.7417582417582418,
"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-08-29T00:00:00"
},
"recent_form_boost": 0.8683151163417789,
"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": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7619,
"prior_weight": 0.2381
}
},
{
"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": 3,
"predicted_H": 4,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "687562",
"player_name": "Jake Bennett",
"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": 3.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 1.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": 3.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 7.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": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"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.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_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": 3.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 7.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": 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.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": 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": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"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.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_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": "deboosted"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BOS",
"games": 140,
"wins": 75,
"losses": 65,
"win_pct": 0.5357,
"runs_scored": 627.0,
"runs_allowed": 550.0,
"run_differential": 77.0,
"run_differential_per_game": 0.55,
"avg_runs_scored": 4.4786,
"avg_runs_allowed": 3.9286,
"offense_index": 0.9963,
"defense_index": 1.1442,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 6.0,
"run_differential": -22.0
},
"available": true,
"quality_score": 0.0626
},
"opponent": {
"team": "BAL",
"games": 140,
"wins": 69,
"losses": 71,
"win_pct": 0.4929,
"runs_scored": 635.0,
"runs_allowed": 655.0,
"run_differential": -20.0,
"run_differential_per_game": -0.1429,
"avg_runs_scored": 4.5357,
"avg_runs_allowed": 4.6786,
"offense_index": 1.009,
"defense_index": 0.9608,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 4.0,
"run_differential": 13.0
},
"available": true,
"quality_score": 0.0115
},
"edges": {
"quality_edge": 0.0511,
"offense_edge": -0.0037,
"opponent_offense_edge": 0.009,
"defense_strength": 0.1442,
"opponent_defense_weakness": 0.0392,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 1.006,
"run_prevention": 0.9845,
"strikeout": 1.0008
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "687562",
"profile": {
"available": true,
"pitcher_id": "687562",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 318.0,
"k_percent": 19.8,
"bb_percent": 4.8,
"woba": 0.262,
"xwoba": 0.277,
"sweet_spot_percent": 31.3,
"barrel_batted_rate": 6.5,
"hard_hit_percent": 36.7,
"avg_best_speed": 76.6896,
"avg_hyper_speed": 93.9586,
"whiff_percent": 24.6,
"swing_percent": 53.2
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.724,
"command_and_miss": 0.05,
"regression_edge": -0.4286,
"xwoba_edge": 0.9714,
"barrel_edge": 0.1778,
"hard_hit_edge": 0.1571,
"whiff_edge": -0.0857,
"bb_edge": 1.075,
"pitch_design_score": -0.0708
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687562",
"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": 88.60453343047513,
"release_spin_rate": 2085.5376155344834,
"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": 88.60453343047513,
"release_spin_rate": 2085.5376155344834,
"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.6045,
"release_spin_rate": 2085.5376,
"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.0708,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5054,
"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.3699,
"sample_weight": 1.0,
"run_prevention_factor": 0.9686,
"strikeout_factor": 0.9846,
"walk_factor": 0.914,
"homer_factor": 0.9503,
"woba_minus_xwoba": -0.015,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "687562",
"espn_id": 4654024,
"player_name": "Jake Bennett",
"team": "BOS",
"role": "pitcher",
"espn_rank": 85,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 85,
"gp_value": 16.0,
"gp_rank": 435,
"gs_value": 16.0,
"gs_rank": 123,
"qs_value": 8.0,
"qs_rank": 71,
"era_value": 3.2669,
"era_rank": null,
"w_value": 9.0,
"w_rank": 37,
"l_value": 6.0,
"l_rank": 105,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 93.2,
"ip_rank": 130,
"h_value": 79.0,
"h_rank": 146,
"er_value": 34.0,
"er_rank": 166,
"hr_value": 7.0,
"hr_rank": 219,
"bb_value": 18.0,
"bb_rank": 318,
"k_value": 74.0,
"k_rank": 159,
"k_per_9_value": 7.11032,
"k_per_9_rank": 33,
"whip_value": 1.0355,
"whip_rank": null,
"war_value": 1.78,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9686,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9686,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.914,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9503,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9846,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 25,
"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 +0."
},
{
"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: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260903_BOS@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"
}
} |
| 20260903 | 20260903_BOS@BAL | home | Brandon Young | Brandon Young | True | 5.2 | 6.2 | 3 | 4 | 3 | -1 | 3/4 | 3/2 | 5/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.383631713554987,
"WHIP": 1.3350383631713554,
"IP": 130.1,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 5.667,
"recent_avg_IP": 5.4,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1806,
"sample_weight": 1.0,
"run_prevention_factor": 1.0154,
"strikeout_factor": 0.9669,
"walk_factor": 0.984,
"homer_factor": 1.0105,
"regression_flag": "neutral",
"k_percent": 18.5,
"bb_percent": 8.3,
"woba": 0.318,
"xwoba": 0.321,
"barrel_percent": 6.7,
"hard_hit_percent": 40.0,
"whiff_percent": 22.8
},
"espn_rank": {
"rank": 63,
"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": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "687064",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.0,
"ER": 11.0,
"R": 12.0,
"H": 31.0,
"BB": 10.0,
"SO": 18.0,
"HR": 6.0,
"BF": 117.0,
"Pitches": 459.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2,
"R": 2.4,
"H": 6.2,
"BB": 2.0,
"SO": 3.6,
"HR": 1.2,
"BF": 23.4,
"Pitches": 91.8
},
"rates": {
"ERA": 3.6667,
"WHIP": 1.5185,
"ER_per_IP": 0.40741,
"H_per_IP": 1.14815,
"BB_per_IP": 0.37037,
"SO_per_IP": 0.66667,
"HR_per_IP": 0.22222
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 58.0,
"ER": 24.0,
"R": 25.0,
"H": 61.0,
"BB": 19.0,
"SO": 46.0,
"HR": 10.0,
"BF": 245.0,
"Pitches": 929.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.5,
"H": 6.1,
"BB": 1.9,
"SO": 4.6,
"HR": 1.0,
"BF": 24.5,
"Pitches": 92.9
},
"rates": {
"ERA": 3.7241,
"WHIP": 1.3793,
"ER_per_IP": 0.41379,
"H_per_IP": 1.05172,
"BB_per_IP": 0.32759,
"SO_per_IP": 0.7931,
"HR_per_IP": 0.17241
}
},
"season": {
"games": 23,
"totals": {
"IP": 130.1,
"ER": 49.0,
"R": 58.0,
"H": 128.0,
"BB": 46.0,
"SO": 103.0,
"HR": 17.0,
"BF": 556.0,
"Pitches": 2074.0
},
"per_game": {
"IP": 5.2,
"ER": 2.1304,
"R": 2.5217,
"H": 5.5652,
"BB": 2.0,
"SO": 4.4783,
"HR": 0.7391,
"BF": 24.1739,
"Pitches": 90.1739
},
"rates": {
"ERA": 3.3836,
"WHIP": 1.335,
"ER_per_IP": 0.37596,
"H_per_IP": 0.9821,
"BB_per_IP": 0.35294,
"SO_per_IP": 0.79028,
"HR_per_IP": 0.13043
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.329,
"predicted_H": 5.886,
"predicted_BB": 1.969,
"predicted_SO": 4.279,
"predicted_HR": 0.994,
"predicted_ERA": 3.7816,
"predicted_WHIP": 1.4171
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4255,
"form_weight": 0.5745,
"form_reliability": 0.8214,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.329,
"final": 3.0399,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.886,
"final": 4.6581,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.969,
"final": 2.4076,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.279,
"final": 4.5858,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.994,
"final": 1.422,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.7816,
"final": 3.7816,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4171,
"final": 1.4171,
"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": 58.0,
"ER": 24,
"H": 61,
"BB": 19,
"SO": 46,
"HR": 10,
"ERA": 3.7241379310344827,
"WHIP": 1.3793103448275863,
"K9": 7.137931034482759,
"HR9": 1.5517241379310345,
"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-08-28T00:00:00"
},
"recent_form_boost": 0.9290436119840677,
"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": 3.0,
"predicted_BB": 3.0,
"predicted_SO": 5.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
}
}
],
"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": 3.0,
"predicted_ER": 4.0,
"predicted_H": 3.0,
"predicted_HR": 2.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": 3.0,
"predicted_ER": 4.0,
"predicted_H": 3.0,
"predicted_HR": 2.0,
"predicted_IP": 5.2,
"predicted_R": 4.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": 4.0,
"after": 4.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": 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": 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": 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": 3.0,
"after": 3.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": 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": "BAL",
"games": 140,
"wins": 69,
"losses": 71,
"win_pct": 0.4929,
"runs_scored": 635.0,
"runs_allowed": 655.0,
"run_differential": -20.0,
"run_differential_per_game": -0.1429,
"avg_runs_scored": 4.5357,
"avg_runs_allowed": 4.6786,
"offense_index": 1.009,
"defense_index": 0.9608,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 4.0,
"run_differential": 13.0
},
"available": true,
"quality_score": 0.0115
},
"opponent": {
"team": "BOS",
"games": 140,
"wins": 75,
"losses": 65,
"win_pct": 0.5357,
"runs_scored": 627.0,
"runs_allowed": 550.0,
"run_differential": 77.0,
"run_differential_per_game": 0.55,
"avg_runs_scored": 4.4786,
"avg_runs_allowed": 3.9286,
"offense_index": 0.9963,
"defense_index": 1.1442,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 6.0,
"run_differential": -22.0
},
"available": true,
"quality_score": 0.0626
},
"edges": {
"quality_edge": -0.0511,
"offense_edge": 0.009,
"opponent_offense_edge": -0.0037,
"defense_strength": -0.0392,
"opponent_defense_weakness": -0.1442,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 0.9969,
"run_prevention": 1.0059,
"strikeout": 0.9988
},
"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": 503.0,
"k_percent": 18.5,
"bb_percent": 8.3,
"woba": 0.318,
"xwoba": 0.321,
"sweet_spot_percent": 34.5,
"barrel_batted_rate": 6.7,
"hard_hit_percent": 40.0,
"avg_best_speed": 78.3395,
"avg_hyper_speed": 94.2536,
"whiff_percent": 22.8,
"swing_percent": 49.9
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.1578,
"command_and_miss": -0.2986,
"regression_edge": -0.0857,
"xwoba_edge": -0.2857,
"barrel_edge": 0.1333,
"hard_hit_edge": -0.3143,
"whiff_edge": -0.3429,
"bb_edge": 0.2,
"pitch_design_score": -0.0756
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687064",
"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": 88.51860048115898,
"release_spin_rate": 2057.9819103388677,
"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": 88.51860048115898,
"release_spin_rate": 2057.9819103388677,
"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.5186,
"release_spin_rate": 2057.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.0756,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5398,
"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.1806,
"sample_weight": 1.0,
"run_prevention_factor": 1.0154,
"strikeout_factor": 0.9669,
"walk_factor": 0.984,
"homer_factor": 1.0105,
"woba_minus_xwoba": -0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "687064",
"espn_id": 4414339,
"player_name": "Brandon Young",
"team": "BAL",
"role": "pitcher",
"espn_rank": 63,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 63,
"gp_value": 23.0,
"gp_rank": 336,
"gs_value": 23.0,
"gs_rank": 72,
"qs_value": 11.0,
"qs_rank": 40,
"era_value": 3.3836,
"era_rank": null,
"w_value": 9.0,
"w_rank": 37,
"l_value": 3.0,
"l_rank": 229,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 130.1,
"ip_rank": 69,
"h_value": 128.0,
"h_rank": 53,
"er_value": 49.0,
"er_rank": 99,
"hr_value": 17.0,
"hr_rank": 60,
"bb_value": 46.0,
"bb_rank": 46,
"k_value": 103.0,
"k_rank": 88,
"k_per_9_value": 7.112532,
"k_per_9_rank": 34,
"whip_value": 1.335,
"whip_rank": null,
"war_value": 2.15,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0154,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 1.0154,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.984,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0105,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9669,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 3,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 25,
"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": "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/20260903_BOS@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"
}
} |
| 20260903 | 20260903_CHW@HOU | away | Luis Castillo | Luis Castillo | True | 4.2 | 4.0 | -2 | 4 | 6 | 2 | 7/6 | 1/2 | 6/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.311475409836065,
"WHIP": 1.4426229508196722,
"IP": 122.0,
"games_started": null,
"games_pitched": 25,
"role_avg_IP": 5.03,
"recent_avg_IP": 4.467,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3805,
"sample_weight": 1.0,
"run_prevention_factor": 1.0323,
"strikeout_factor": 0.9811,
"walk_factor": 0.958,
"homer_factor": 1.0935,
"regression_flag": "neutral",
"k_percent": 19.4,
"bb_percent": 7.0,
"woba": 0.353,
"xwoba": 0.341,
"barrel_percent": 9.6,
"hard_hit_percent": 42.5,
"whiff_percent": 24.4
},
"espn_rank": {
"rank": 818,
"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": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "622491",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 25,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.1,
"ER": 16.0,
"R": 17.0,
"H": 31.0,
"BB": 6.0,
"SO": 20.0,
"HR": 7.0,
"BF": 103.0,
"Pitches": 429.0
},
"per_game": {
"IP": 4.1,
"ER": 3.2,
"R": 3.4,
"H": 6.2,
"BB": 1.2,
"SO": 4.0,
"HR": 1.4,
"BF": 20.6,
"Pitches": 85.8
},
"rates": {
"ERA": 6.4478,
"WHIP": 1.6567,
"ER_per_IP": 0.71642,
"H_per_IP": 1.38806,
"BB_per_IP": 0.26866,
"SO_per_IP": 0.89552,
"HR_per_IP": 0.31343
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.1,
"ER": 31.0,
"R": 32.0,
"H": 64.0,
"BB": 13.0,
"SO": 37.0,
"HR": 14.0,
"BF": 229.0,
"Pitches": 903.0
},
"per_game": {
"IP": 5.0,
"ER": 3.1,
"R": 3.2,
"H": 6.4,
"BB": 1.3,
"SO": 3.7,
"HR": 1.4,
"BF": 22.9,
"Pitches": 90.3
},
"rates": {
"ERA": 5.4351,
"WHIP": 1.5,
"ER_per_IP": 0.6039,
"H_per_IP": 1.24675,
"BB_per_IP": 0.25325,
"SO_per_IP": 0.72078,
"HR_per_IP": 0.27273
}
},
"season": {
"games": 25,
"totals": {
"IP": 122.0,
"ER": 72.0,
"R": 82.0,
"H": 138.0,
"BB": 38.0,
"SO": 106.0,
"HR": 23.0,
"BF": 546.0,
"Pitches": 2196.0
},
"per_game": {
"IP": 5.0,
"ER": 2.88,
"R": 3.28,
"H": 5.52,
"BB": 1.52,
"SO": 4.24,
"HR": 0.92,
"BF": 21.84,
"Pitches": 87.84
},
"rates": {
"ERA": 5.3115,
"WHIP": 1.4426,
"ER_per_IP": 0.59016,
"H_per_IP": 1.13115,
"BB_per_IP": 0.31148,
"SO_per_IP": 0.86885,
"HR_per_IP": 0.18852
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.939,
"predicted_H": 5.797,
"predicted_BB": 1.353,
"predicted_SO": 3.978,
"predicted_HR": 1.187,
"predicted_ERA": 5.6347,
"predicted_WHIP": 1.5231
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4204,
"form_weight": 0.5796,
"form_reliability": 0.8333,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.939,
"final": 2.9646,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 5.797,
"final": 6.3028,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.353,
"final": 1.2046,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 3.978,
"final": 4.8281,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.187,
"final": 1.1084,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.6347,
"final": 5.6347,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5231,
"final": 1.5231,
"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": 31,
"H": 64,
"BB": 13,
"SO": 37,
"HR": 14,
"ERA": 5.4350649350649345,
"WHIP": 1.5,
"K9": 6.487012987012987,
"HR9": 2.4545454545454546,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-28T00:00:00"
},
"recent_form_boost": 1.1245401413168037,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_BB": 1.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "622491",
"player_name": "Luis Castillo",
"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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 7.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": 3.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_R": 3.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": 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": 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": 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": 7.0,
"after": 7.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": "CHW",
"games": 139,
"wins": 73,
"losses": 66,
"win_pct": 0.5252,
"runs_scored": 660.0,
"runs_allowed": 617.0,
"run_differential": 43.0,
"run_differential_per_game": 0.3094,
"avg_runs_scored": 4.7482,
"avg_runs_allowed": 4.4388,
"offense_index": 1.0555,
"defense_index": 1.0134,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.3,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0942
},
"opponent": {
"team": "HOU",
"games": 140,
"wins": 71,
"losses": 69,
"win_pct": 0.5071,
"runs_scored": 633.0,
"runs_allowed": 675.0,
"run_differential": -42.0,
"run_differential_per_game": -0.3,
"avg_runs_scored": 4.5214,
"avg_runs_allowed": 4.8214,
"offense_index": 1.0051,
"defense_index": 0.933,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 4.2,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0044
},
"edges": {
"quality_edge": 0.0898,
"offense_edge": 0.0555,
"opponent_offense_edge": 0.0051,
"defense_strength": 0.0134,
"opponent_defense_weakness": 0.067,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0038,
"run_prevention": 0.995,
"strikeout": 1.0023
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "622491",
"profile": {
"available": true,
"pitcher_id": "622491",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 502.0,
"k_percent": 19.4,
"bb_percent": 7.0,
"woba": 0.353,
"xwoba": 0.341,
"sweet_spot_percent": 34.4,
"barrel_batted_rate": 9.6,
"hard_hit_percent": 42.5,
"avg_best_speed": 79.7302,
"avg_hyper_speed": 94.473,
"whiff_percent": 24.4,
"swing_percent": 52.3
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.7119,
"command_and_miss": -0.0957,
"regression_edge": 0.3429,
"xwoba_edge": -0.8571,
"barrel_edge": -0.5111,
"hard_hit_edge": -0.6714,
"whiff_edge": -0.1143,
"bb_edge": 0.525,
"pitch_design_score": 0.1096
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "622491",
"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": 91.82478399959184,
"release_spin_rate": 2186.058161203955,
"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": 91.82478399959184,
"release_spin_rate": 2186.058161203955,
"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.8248,
"release_spin_rate": 2186.0582,
"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.1096,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.7827,
"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.3805,
"sample_weight": 1.0,
"run_prevention_factor": 1.0323,
"strikeout_factor": 0.9811,
"walk_factor": 0.958,
"homer_factor": 1.0935,
"woba_minus_xwoba": 0.012,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "622491",
"espn_id": 35124,
"player_name": "Luis Castillo",
"team": "CHW",
"role": "pitcher",
"espn_rank": 818,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 818,
"gp_value": 25.0,
"gp_rank": 302,
"gs_value": 22.0,
"gs_rank": 81,
"qs_value": 5.0,
"qs_rank": 108,
"era_value": 5.3114,
"era_rank": null,
"w_value": 4.0,
"w_rank": 179,
"l_value": 10.0,
"l_rank": 13,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 1.0,
"hld_rank": 264,
"ip_value": 122.0,
"ip_rank": 88,
"h_value": 138.0,
"h_rank": 30,
"er_value": 72.0,
"er_rank": 18,
"hr_value": 23.0,
"hr_rank": 17,
"bb_value": 38.0,
"bb_rank": 89,
"k_value": 106.0,
"k_rank": 83,
"k_per_9_value": 7.819672,
"k_per_9_rank": 25,
"whip_value": 1.4426,
"whip_rank": null,
"war_value": -0.84,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0323,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0323,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.958,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0935,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9811,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 7,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 96,
"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/20260903_CHW@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"
}
} |
| 20260903 | 20260903_CHW@HOU | home | Hunter Brown | Hunter Brown | True | 5.2 | 6.0 | 1 | 3 | 2 | -1 | 6/6 | 4/2 | 3/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.3333333333333335,
"WHIP": 1.2962962962962963,
"IP": 81.0,
"games_started": null,
"games_pitched": 15,
"role_avg_IP": 5.4,
"recent_avg_IP": 5.667,
"last_start_IP": 6.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.3054,
"sample_weight": 1.0,
"run_prevention_factor": 0.974,
"strikeout_factor": 1.0206,
"walk_factor": 1.076,
"homer_factor": 0.9645,
"regression_flag": "neutral",
"k_percent": 25.3,
"bb_percent": 12.9,
"woba": 0.303,
"xwoba": 0.293,
"barrel_percent": 6.3,
"hard_hit_percent": 37.4,
"whiff_percent": 25.4
},
"espn_rank": {
"rank": 93,
"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": "686613",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 15,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.1,
"ER": 10.0,
"R": 10.0,
"H": 23.0,
"BB": 14.0,
"SO": 31.0,
"HR": 4.0,
"BF": 117.0,
"Pitches": 475.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0,
"R": 2.0,
"H": 4.6,
"BB": 2.8,
"SO": 6.2,
"HR": 0.8,
"BF": 23.4,
"Pitches": 95.0
},
"rates": {
"ERA": 3.1765,
"WHIP": 1.3059,
"ER_per_IP": 0.35294,
"H_per_IP": 0.81176,
"BB_per_IP": 0.49412,
"SO_per_IP": 1.09412,
"HR_per_IP": 0.14118
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.2,
"ER": 25.0,
"R": 26.0,
"H": 44.0,
"BB": 31.0,
"SO": 54.0,
"HR": 8.0,
"BF": 234.0,
"Pitches": 941.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5,
"R": 2.6,
"H": 4.4,
"BB": 3.1,
"SO": 5.4,
"HR": 0.8,
"BF": 23.4,
"Pitches": 94.1
},
"rates": {
"ERA": 4.0419,
"WHIP": 1.3473,
"ER_per_IP": 0.4491,
"H_per_IP": 0.79042,
"BB_per_IP": 0.55689,
"SO_per_IP": 0.97006,
"HR_per_IP": 0.14371
}
},
"season": {
"games": 15,
"totals": {
"IP": 81.0,
"ER": 30.0,
"R": 32.0,
"H": 61.0,
"BB": 44.0,
"SO": 86.0,
"HR": 10.0,
"BF": 340.0,
"Pitches": 1401.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0,
"R": 2.1333,
"H": 4.0667,
"BB": 2.9333,
"SO": 5.7333,
"HR": 0.6667,
"BF": 22.6667,
"Pitches": 93.4
},
"rates": {
"ERA": 3.3333,
"WHIP": 1.2963,
"ER_per_IP": 0.37037,
"H_per_IP": 0.75309,
"BB_per_IP": 0.54321,
"SO_per_IP": 1.06173,
"HR_per_IP": 0.12346
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.342,
"predicted_H": 4.705,
"predicted_BB": 2.736,
"predicted_SO": 5.717,
"predicted_HR": 0.789,
"predicted_ERA": 3.7526,
"predicted_WHIP": 1.3247
}
},
"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.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.342,
"final": 2.6418,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.705,
"final": 5.295,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 2.736,
"final": 3.3119,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 5.717,
"final": 4.0234,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.789,
"final": 1.3408,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.7526,
"final": 3.7526,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3247,
"final": 1.3247,
"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": 25,
"H": 44,
"BB": 31,
"SO": 54,
"HR": 8,
"ERA": 4.04191616766467,
"WHIP": 1.3473053892215567,
"K9": 8.730538922155688,
"HR9": 1.2934131736526946,
"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-08-28T00:00:00"
},
"recent_form_boost": 0.9639935397148129,
"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": 4.0,
"predicted_SO": 2.0,
"predicted_HR": 2.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
}
}
],
"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": 4.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.6667,
"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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 3.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": 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.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"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": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"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": 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": 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.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"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": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"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": 140,
"wins": 71,
"losses": 69,
"win_pct": 0.5071,
"runs_scored": 633.0,
"runs_allowed": 675.0,
"run_differential": -42.0,
"run_differential_per_game": -0.3,
"avg_runs_scored": 4.5214,
"avg_runs_allowed": 4.8214,
"offense_index": 1.0051,
"defense_index": 0.933,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 4.2,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0044
},
"opponent": {
"team": "CHW",
"games": 139,
"wins": 73,
"losses": 66,
"win_pct": 0.5252,
"runs_scored": 660.0,
"runs_allowed": 617.0,
"run_differential": 43.0,
"run_differential_per_game": 0.3094,
"avg_runs_scored": 4.7482,
"avg_runs_allowed": 4.4388,
"offense_index": 1.0555,
"defense_index": 1.0134,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.3,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0942
},
"edges": {
"quality_edge": -0.0898,
"offense_edge": 0.0051,
"opponent_offense_edge": 0.0555,
"defense_strength": -0.067,
"opponent_defense_weakness": -0.0134,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9922,
"run_prevention": 1.0201,
"strikeout": 0.9929
},
"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": 291.0,
"k_percent": 25.3,
"bb_percent": 12.9,
"woba": 0.303,
"xwoba": 0.293,
"sweet_spot_percent": 28.2,
"barrel_batted_rate": 6.3,
"hard_hit_percent": 37.4,
"avg_best_speed": 73.4226,
"avg_hyper_speed": 93.2338,
"whiff_percent": 25.4,
"swing_percent": 41.5
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.4571,
"command_and_miss": 0.0386,
"regression_edge": 0.2857,
"xwoba_edge": 0.5143,
"barrel_edge": 0.2222,
"hard_hit_edge": 0.0571,
"whiff_edge": 0.0286,
"bb_edge": -0.95,
"pitch_design_score": 0.136
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "686613",
"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": 92.29605869429095,
"release_spin_rate": 2200.9095575606843,
"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": 92.29605869429095,
"release_spin_rate": 2200.9095575606843,
"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.2961,
"release_spin_rate": 2200.9096,
"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.136,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.9712,
"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.3054,
"sample_weight": 1.0,
"run_prevention_factor": 0.974,
"strikeout_factor": 1.0206,
"walk_factor": 1.076,
"homer_factor": 0.9645,
"woba_minus_xwoba": 0.01,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "686613",
"espn_id": 4717803,
"player_name": "Hunter Brown",
"team": "HOU",
"role": "pitcher",
"espn_rank": 93,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 93,
"gp_value": 15.0,
"gp_rank": 449,
"gs_value": 15.0,
"gs_rank": 131,
"qs_value": 6.0,
"qs_rank": 89,
"era_value": 3.3333,
"era_rank": null,
"w_value": 4.0,
"w_rank": 179,
"l_value": 3.0,
"l_rank": 229,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 81.0,
"ip_rank": 151,
"h_value": 61.0,
"h_rank": 181,
"er_value": 30.0,
"er_rank": 182,
"hr_value": 10.0,
"hr_rank": 151,
"bb_value": 44.0,
"bb_rank": 57,
"k_value": 86.0,
"k_rank": 129,
"k_per_9_value": 9.555555,
"k_per_9_rank": 23,
"whip_value": 1.2962,
"whip_rank": null,
"war_value": 1.73,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.974,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.974,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.076,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9645,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0206,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 4,
"predicted_SO": 3,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 27,
"Pitches": 117,
"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."
},
{
"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/20260903_CHW@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"
}
} |
| 20260903 | 20260903_MIA@KC | away | Sandy Alcantara | Sandy Alcantara | True | 6.1 | 6.0 | -1 | 1 | 4 | 3 | 0/6 | 1/1 | 2/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.4639718804920916,
"WHIP": 1.1862917398945518,
"IP": 189.2,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 6.54,
"recent_avg_IP": 6.6,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1549,
"sample_weight": 1.0,
"run_prevention_factor": 0.9868,
"strikeout_factor": 0.9554,
"walk_factor": 0.946,
"homer_factor": 0.9306,
"regression_flag": "neutral",
"k_percent": 17.9,
"bb_percent": 6.4,
"woba": 0.294,
"xwoba": 0.295,
"barrel_percent": 5.1,
"hard_hit_percent": 34.9,
"whiff_percent": 21.4
},
"espn_rank": {
"rank": 24,
"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": 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": "645261",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 33.0,
"ER": 9.0,
"R": 9.0,
"H": 28.0,
"BB": 9.0,
"SO": 20.0,
"HR": 1.0,
"BF": 135.0,
"Pitches": 504.0
},
"per_game": {
"IP": 6.2,
"ER": 1.8,
"R": 1.8,
"H": 5.6,
"BB": 1.8,
"SO": 4.0,
"HR": 0.2,
"BF": 27.0,
"Pitches": 100.8
},
"rates": {
"ERA": 2.4545,
"WHIP": 1.1212,
"ER_per_IP": 0.27273,
"H_per_IP": 0.84848,
"BB_per_IP": 0.27273,
"SO_per_IP": 0.60606,
"HR_per_IP": 0.0303
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 66.0,
"ER": 18.0,
"R": 18.0,
"H": 53.0,
"BB": 17.0,
"SO": 48.0,
"HR": 6.0,
"BF": 267.0,
"Pitches": 1014.0
},
"per_game": {
"IP": 6.2,
"ER": 1.8,
"R": 1.8,
"H": 5.3,
"BB": 1.7,
"SO": 4.8,
"HR": 0.6,
"BF": 26.7,
"Pitches": 101.4
},
"rates": {
"ERA": 2.4545,
"WHIP": 1.0606,
"ER_per_IP": 0.27273,
"H_per_IP": 0.80303,
"BB_per_IP": 0.25758,
"SO_per_IP": 0.72727,
"HR_per_IP": 0.09091
}
},
"season": {
"games": 29,
"totals": {
"IP": 189.2,
"ER": 73.0,
"R": 78.0,
"H": 175.0,
"BB": 50.0,
"SO": 140.0,
"HR": 18.0,
"BF": 784.0,
"Pitches": 2863.0
},
"per_game": {
"IP": 6.2,
"ER": 2.5172,
"R": 2.6897,
"H": 6.0345,
"BB": 1.7241,
"SO": 4.8276,
"HR": 0.6207,
"BF": 27.0345,
"Pitches": 98.7241
},
"rates": {
"ERA": 3.464,
"WHIP": 1.1863,
"ER_per_IP": 0.38489,
"H_per_IP": 0.92267,
"BB_per_IP": 0.26362,
"SO_per_IP": 0.73814,
"HR_per_IP": 0.0949
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.2,
"predicted_ER": 2.15,
"predicted_H": 5.73,
"predicted_BB": 1.86,
"predicted_SO": 4.723,
"predicted_HR": 0.506,
"predicted_ERA": 2.9244,
"predicted_WHIP": 1.1469
}
},
"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": 6.1,
"form": 6.2,
"final": 6.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.15,
"final": 1.676,
"source": "model_form_blend"
},
"predicted_H": {
"model": 0.0,
"form": 5.73,
"final": 3.3684,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.86,
"final": 1.5056,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.723,
"final": 3.6007,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.506,
"final": 0.2975,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.9244,
"final": 2.9244,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1469,
"final": 1.1469,
"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": 66.0,
"ER": 18,
"H": 53,
"BB": 17,
"SO": 48,
"HR": 6,
"ERA": 2.4545454545454546,
"WHIP": 1.0606060606060606,
"K9": 6.545454545454546,
"HR9": 0.8181818181818182,
"games_pitched": 10,
"quality_starts": 8,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-29T00:00:00"
},
"recent_form_boost": 0.7782468512735138,
"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": 0.0,
"predicted_BB": 1.0,
"predicted_SO": 2.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
}
}
],
"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": 1.0,
"predicted_ER": 1.0,
"predicted_H": 0.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_R": 1.0,
"predicted_SO": 2.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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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": 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.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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": 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.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": "MIA",
"games": 140,
"wins": 71,
"losses": 69,
"win_pct": 0.5071,
"runs_scored": 612.0,
"runs_allowed": 594.0,
"run_differential": 18.0,
"run_differential_per_game": 0.1286,
"avg_runs_scored": 4.3714,
"avg_runs_allowed": 4.2429,
"offense_index": 0.9733,
"defense_index": 1.0585,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 4.4,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0218
},
"opponent": {
"team": "KC",
"games": 140,
"wins": 62,
"losses": 78,
"win_pct": 0.4429,
"runs_scored": 599.0,
"runs_allowed": 688.0,
"run_differential": -89.0,
"run_differential_per_game": -0.6357,
"avg_runs_scored": 4.2786,
"avg_runs_allowed": 4.9143,
"offense_index": 0.9527,
"defense_index": 0.9139,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 4.5,
"run_differential": 8.0
},
"available": true,
"quality_score": -0.0914
},
"edges": {
"quality_edge": 0.1132,
"offense_edge": -0.0267,
"opponent_offense_edge": -0.0473,
"defense_strength": 0.0585,
"opponent_defense_weakness": 0.0861,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0082,
"run_prevention": 0.9809,
"strikeout": 1.0072
},
"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": 724.0,
"k_percent": 17.9,
"bb_percent": 6.4,
"woba": 0.294,
"xwoba": 0.295,
"sweet_spot_percent": 32.7,
"barrel_batted_rate": 5.1,
"hard_hit_percent": 34.9,
"avg_best_speed": 77.4385,
"avg_hyper_speed": 93.497,
"whiff_percent": 21.4,
"swing_percent": 50.9
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.4055,
"command_and_miss": -0.3121,
"regression_edge": -0.0286,
"xwoba_edge": 0.4571,
"barrel_edge": 0.4889,
"hard_hit_edge": 0.4143,
"whiff_edge": -0.5429,
"bb_edge": 0.675,
"pitch_design_score": 0.1481
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "645261",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 102,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 102,
"pitch_usage": 0.0,
"release_speed": 92.51275382443535,
"release_spin_rate": 2245.096491486143,
"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": 102,
"pitch_usage": 0.0,
"release_speed": 92.51275382443535,
"release_spin_rate": 2245.096491486143,
"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.5128,
"release_spin_rate": 2245.0965,
"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.1481,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.0579,
"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.1549,
"sample_weight": 1.0,
"run_prevention_factor": 0.9868,
"strikeout_factor": 0.9554,
"walk_factor": 0.946,
"homer_factor": 0.9306,
"woba_minus_xwoba": -0.001,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "645261",
"espn_id": 35241,
"player_name": "Sandy Alcantara",
"team": "MIA",
"role": "pitcher",
"espn_rank": 24,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 24,
"gp_value": 29.0,
"gp_rank": 216,
"gs_value": 29.0,
"gs_rank": 1,
"qs_value": 21.0,
"qs_rank": 1,
"era_value": 3.4639,
"era_rank": 25.0,
"w_value": 13.0,
"w_rank": 9,
"l_value": 8.0,
"l_rank": 45,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 189.2,
"ip_rank": 1,
"h_value": 175.0,
"h_rank": 1,
"er_value": 73.0,
"er_rank": 16,
"hr_value": 18.0,
"hr_rank": 46,
"bb_value": 50.0,
"bb_rank": 30,
"k_value": 140.0,
"k_rank": 35,
"k_per_9_value": 6.643234,
"k_per_9_rank": 945,
"whip_value": 1.1862,
"whip_rank": 27.0,
"war_value": 3.33,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9868,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 0.9868,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.946,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9306,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9554,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 0,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 2,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"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": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 6",
"detail": "Actual minus predicted hits was +6."
},
{
"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/20260903_MIA@KC.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"
}
} |
| 20260903 | 20260903_MIA@KC | home | Michael Wacha | Michael Wacha | True | 6.1 | 6.0 | -1 | 3 | 3 | 0 | 8/6 | 2/2 | 5/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.322265625,
"WHIP": 1.095703125,
"IP": 170.2,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 6.321,
"recent_avg_IP": 6.467,
"last_start_IP": 8.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0172,
"sample_weight": 1.0,
"run_prevention_factor": 1.0015,
"strikeout_factor": 0.9663,
"walk_factor": 0.94,
"homer_factor": 0.9823,
"regression_flag": "neutral",
"k_percent": 19.8,
"bb_percent": 6.1,
"woba": 0.298,
"xwoba": 0.308,
"barrel_percent": 6.8,
"hard_hit_percent": 36.7,
"whiff_percent": 21.4
},
"espn_rank": {
"rank": 22,
"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": "608379",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 32.1,
"ER": 9.0,
"R": 9.0,
"H": 23.0,
"BB": 4.0,
"SO": 25.0,
"HR": 6.0,
"BF": 123.0,
"Pitches": 468.0
},
"per_game": {
"IP": 6.1,
"ER": 1.8,
"R": 1.8,
"H": 4.6,
"BB": 0.8,
"SO": 5.0,
"HR": 1.2,
"BF": 24.6,
"Pitches": 93.6
},
"rates": {
"ERA": 2.5052,
"WHIP": 0.8351,
"ER_per_IP": 0.27835,
"H_per_IP": 0.71134,
"BB_per_IP": 0.12371,
"SO_per_IP": 0.7732,
"HR_per_IP": 0.18557
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 62.0,
"ER": 23.0,
"R": 25.0,
"H": 51.0,
"BB": 12.0,
"SO": 52.0,
"HR": 12.0,
"BF": 248.0,
"Pitches": 968.0
},
"per_game": {
"IP": 6.1,
"ER": 2.3,
"R": 2.5,
"H": 5.1,
"BB": 1.2,
"SO": 5.2,
"HR": 1.2,
"BF": 24.8,
"Pitches": 96.8
},
"rates": {
"ERA": 3.3387,
"WHIP": 1.0161,
"ER_per_IP": 0.37097,
"H_per_IP": 0.82258,
"BB_per_IP": 0.19355,
"SO_per_IP": 0.83871,
"HR_per_IP": 0.19355
}
},
"season": {
"games": 27,
"totals": {
"IP": 170.2,
"ER": 63.0,
"R": 67.0,
"H": 145.0,
"BB": 42.0,
"SO": 136.0,
"HR": 22.0,
"BF": 686.0,
"Pitches": 2537.0
},
"per_game": {
"IP": 6.1,
"ER": 2.3333,
"R": 2.4815,
"H": 5.3704,
"BB": 1.5556,
"SO": 5.037,
"HR": 0.8148,
"BF": 25.4074,
"Pitches": 93.963
},
"rates": {
"ERA": 3.3223,
"WHIP": 1.0957,
"ER_per_IP": 0.36914,
"H_per_IP": 0.84961,
"BB_per_IP": 0.24609,
"SO_per_IP": 0.79688,
"HR_per_IP": 0.12891
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 2.25,
"predicted_H": 5.12,
"predicted_BB": 1.289,
"predicted_SO": 5.209,
"predicted_HR": 1.091,
"predicted_ERA": 3.1974,
"predicted_WHIP": 1.012
}
},
"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": 6.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.25,
"final": 2.978,
"source": "model_form_blend"
},
"predicted_H": {
"model": 8.0,
"form": 5.12,
"final": 6.3181,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.289,
"final": 1.5848,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 0.0,
"form": 5.209,
"final": 3.0421,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.091,
"final": 0.6372,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.1974,
"final": 3.1974,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.012,
"final": 1.012,
"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": 62.0,
"ER": 23,
"H": 51,
"BB": 12,
"SO": 52,
"HR": 12,
"ERA": 3.338709677419355,
"WHIP": 1.0161290322580645,
"K9": 7.548387096774194,
"HR9": 1.7419354838709677,
"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-08-28T00:00:00"
},
"recent_form_boost": 0.8766034006381277,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_BB": 2.0,
"predicted_SO": 0.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
}
},
{
"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": 8,
"predicted_BB": 2,
"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": 2.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_HR": 0.0,
"predicted_IP": 6.3333,
"predicted_SO": 0.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": 3.0,
"predicted_H": 8.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"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": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"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": 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": 0.0,
"after": 5.0,
"delta": 5.0,
"percent_delta": null,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 3,
"boosted_metrics": 1,
"deboosted_metrics": 2,
"better_metrics": 2,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 0.0,
"after": 5.0,
"delta": 5.0,
"percent_delta": null,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"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": 2.0,
"predicted_ER": 3.0,
"predicted_H": 8.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_R": 3.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": 3.0,
"after": 3.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": 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": 2.0,
"after": 2.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": 8.0,
"after": 8.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": 0.0,
"after": 5.0,
"delta": 5.0,
"percent_delta": null,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 3,
"boosted_metrics": 1,
"deboosted_metrics": 2,
"better_metrics": 2,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 0.0,
"after": 5.0,
"delta": 5.0,
"percent_delta": null,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"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": "KC",
"games": 140,
"wins": 62,
"losses": 78,
"win_pct": 0.4429,
"runs_scored": 599.0,
"runs_allowed": 688.0,
"run_differential": -89.0,
"run_differential_per_game": -0.6357,
"avg_runs_scored": 4.2786,
"avg_runs_allowed": 4.9143,
"offense_index": 0.9527,
"defense_index": 0.9139,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 4.5,
"run_differential": 8.0
},
"available": true,
"quality_score": -0.0914
},
"opponent": {
"team": "MIA",
"games": 140,
"wins": 71,
"losses": 69,
"win_pct": 0.5071,
"runs_scored": 612.0,
"runs_allowed": 594.0,
"run_differential": 18.0,
"run_differential_per_game": 0.1286,
"avg_runs_scored": 4.3714,
"avg_runs_allowed": 4.2429,
"offense_index": 0.9733,
"defense_index": 1.0585,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 4.4,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0218
},
"edges": {
"quality_edge": -0.1132,
"offense_edge": -0.0473,
"opponent_offense_edge": -0.0267,
"defense_strength": -0.0861,
"opponent_defense_weakness": -0.0585,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.994,
"run_prevention": 1.01,
"strikeout": 0.9987
},
"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": 604.0,
"k_percent": 19.8,
"bb_percent": 6.1,
"woba": 0.298,
"xwoba": 0.308,
"sweet_spot_percent": 34.7,
"barrel_batted_rate": 6.8,
"hard_hit_percent": 36.7,
"avg_best_speed": 77.713,
"avg_hyper_speed": 93.6019,
"whiff_percent": 21.4,
"swing_percent": 48.8
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.1246,
"command_and_miss": -0.175,
"regression_edge": -0.2857,
"xwoba_edge": 0.0857,
"barrel_edge": 0.1111,
"hard_hit_edge": 0.1571,
"whiff_edge": -0.5429,
"bb_edge": 0.75,
"pitch_design_score": -0.1615
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "608379",
"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": 86.98359735962079,
"release_spin_rate": 1984.113597852512,
"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": 86.98359735962079,
"release_spin_rate": 1984.113597852512,
"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.9836,
"release_spin_rate": 1984.1136,
"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.1615,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.1538,
"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.0172,
"sample_weight": 1.0,
"run_prevention_factor": 1.0015,
"strikeout_factor": 0.9663,
"walk_factor": 0.94,
"homer_factor": 0.9823,
"woba_minus_xwoba": -0.01,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "608379",
"espn_id": 32640,
"player_name": "Michael Wacha",
"team": "KC",
"role": "pitcher",
"espn_rank": 22,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 22,
"gp_value": 27.0,
"gp_rank": 251,
"gs_value": 27.0,
"gs_rank": 19,
"qs_value": 18.0,
"qs_rank": 4,
"era_value": 3.3222,
"era_rank": 21.0,
"w_value": 8.0,
"w_rank": 58,
"l_value": 8.0,
"l_rank": 45,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 170.2,
"ip_rank": 4,
"h_value": 145.0,
"h_rank": 19,
"er_value": 63.0,
"er_rank": 49,
"hr_value": 22.0,
"hr_rank": 20,
"bb_value": 42.0,
"bb_rank": 65,
"k_value": 136.0,
"k_rank": 45,
"k_per_9_value": 7.171875,
"k_per_9_rank": 303,
"whip_value": 1.0957,
"whip_rank": 14.0,
"war_value": 3.41,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0015,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0015,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.94,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9823,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9663,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 8,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 29,
"Pitches": 119,
"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": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260903_MIA@KC.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"
}
} |
| 20260903 | 20260903_MIL@CHC | away | Logan Henderson | Logan Henderson | True | 6.0 | 7.0 | 3 | 3 | 2 | -1 | 3/3 | 2/0 | 7/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.475982532751092,
"WHIP": 0.8253275109170306,
"IP": 76.1,
"games_started": null,
"games_pitched": 14,
"role_avg_IP": 5.452,
"recent_avg_IP": 6.467,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.6378,
"sample_weight": 0.956,
"run_prevention_factor": 0.9458,
"strikeout_factor": 1.0541,
"walk_factor": 0.9197,
"homer_factor": 0.9811,
"regression_flag": "neutral",
"k_percent": 30.1,
"bb_percent": 4.9,
"woba": 0.249,
"xwoba": 0.257,
"barrel_percent": 8.6,
"hard_hit_percent": 38.4,
"whiff_percent": 26.9
},
"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": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "701656",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 14,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 32.1,
"ER": 8.0,
"R": 8.0,
"H": 18.0,
"BB": 5.0,
"SO": 32.0,
"HR": 6.0,
"BF": 117.0,
"Pitches": 458.0
},
"per_game": {
"IP": 6.1,
"ER": 1.6,
"R": 1.6,
"H": 3.6,
"BB": 1.0,
"SO": 6.4,
"HR": 1.2,
"BF": 23.4,
"Pitches": 91.6
},
"rates": {
"ERA": 2.2268,
"WHIP": 0.7113,
"ER_per_IP": 0.24742,
"H_per_IP": 0.5567,
"BB_per_IP": 0.15464,
"SO_per_IP": 0.98969,
"HR_per_IP": 0.18557
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 58.1,
"ER": 14.0,
"R": 14.0,
"H": 33.0,
"BB": 11.0,
"SO": 63.0,
"HR": 9.0,
"BF": 215.0,
"Pitches": 865.0
},
"per_game": {
"IP": 6.0,
"ER": 1.4,
"R": 1.4,
"H": 3.3,
"BB": 1.1,
"SO": 6.3,
"HR": 0.9,
"BF": 21.5,
"Pitches": 86.5
},
"rates": {
"ERA": 2.16,
"WHIP": 0.7543,
"ER_per_IP": 0.24,
"H_per_IP": 0.56571,
"BB_per_IP": 0.18857,
"SO_per_IP": 1.08,
"HR_per_IP": 0.15429
}
},
"season": {
"games": 14,
"totals": {
"IP": 76.1,
"ER": 21.0,
"R": 21.0,
"H": 49.0,
"BB": 14.0,
"SO": 86.0,
"HR": 11.0,
"BF": 286.0,
"Pitches": 1134.0
},
"per_game": {
"IP": 5.1,
"ER": 1.5,
"R": 1.5,
"H": 3.5,
"BB": 1.0,
"SO": 6.1429,
"HR": 0.7857,
"BF": 20.4286,
"Pitches": 81.0
},
"rates": {
"ERA": 2.476,
"WHIP": 0.8253,
"ER_per_IP": 0.27511,
"H_per_IP": 0.64192,
"BB_per_IP": 0.18341,
"SO_per_IP": 1.12664,
"HR_per_IP": 0.1441
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.896,
"predicted_H": 4.095,
"predicted_BB": 1.35,
"predicted_SO": 6.132,
"predicted_HR": 0.969,
"predicted_ERA": 2.8389,
"predicted_WHIP": 0.9056
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4612,
"form_weight": 0.5388,
"form_reliability": 0.7368,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 1.896,
"final": 2.8664,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.095,
"final": 3.59,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.35,
"final": 1.6498,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 6.132,
"final": 6.5323,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 3.0,
"form": 0.969,
"final": 1.9057,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.8389,
"final": 2.8389,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.9056,
"final": 0.9056,
"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": 58.1,
"ER": 14,
"H": 33,
"BB": 11,
"SO": 63,
"HR": 9,
"ERA": 2.1599999999999997,
"WHIP": 0.7542857142857142,
"K9": 9.719999999999999,
"HR9": 1.3885714285714286,
"games_pitched": 10,
"quality_starts": 5,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-28T00:00:00"
},
"recent_form_boost": 0.7374524789791416,
"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": 3.0,
"predicted_BB": 2.0,
"predicted_SO": 7.0,
"predicted_HR": 3.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
}
},
{
"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": 3,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "701656",
"player_name": "Logan Henderson",
"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": 2.0,
"predicted_ER": 4.0,
"predicted_H": 3.0,
"predicted_HR": 3.0,
"predicted_IP": 6.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": "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": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 6.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": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"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": 3.0,
"after": 1.0,
"delta": -2.0,
"percent_delta": -0.6667,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"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": 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": 2,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_HR",
"before": 3.0,
"after": 1.0,
"delta": -2.0,
"percent_delta": -0.6667,
"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": 3.0,
"predicted_H": 3.0,
"predicted_HR": 2.0,
"predicted_IP": 6.0,
"predicted_R": 3.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": 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": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"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": 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": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"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": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"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": 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": 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": "MIL",
"games": 140,
"wins": 87,
"losses": 53,
"win_pct": 0.6214,
"runs_scored": 704.0,
"runs_allowed": 532.0,
"run_differential": 172.0,
"run_differential_per_game": 1.2286,
"avg_runs_scored": 5.0286,
"avg_runs_allowed": 3.8,
"offense_index": 1.1186,
"defense_index": 1.183,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 4.7,
"run_differential": 9.0
},
"available": true,
"quality_score": 0.2885
},
"opponent": {
"team": "CHC",
"games": 140,
"wins": 78,
"losses": 62,
"win_pct": 0.5571,
"runs_scored": 751.0,
"runs_allowed": 619.0,
"run_differential": 132.0,
"run_differential_per_game": 0.9429,
"avg_runs_scored": 5.3643,
"avg_runs_allowed": 4.4214,
"offense_index": 1.1933,
"defense_index": 1.0167,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 8.6,
"avg_runs_allowed": 5.2,
"run_differential": 34.0
},
"available": true,
"quality_score": 0.1289
},
"edges": {
"quality_edge": 0.1596,
"offense_edge": 0.1186,
"opponent_offense_edge": 0.1933,
"defense_strength": 0.183,
"opponent_defense_weakness": -0.0167,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0041,
"run_prevention": 1.0046,
"strikeout": 0.9893
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "701656",
"profile": {
"available": true,
"pitcher_id": "701656",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 239.0,
"k_percent": 30.1,
"bb_percent": 4.9,
"woba": 0.249,
"xwoba": 0.257,
"sweet_spot_percent": 35.1,
"barrel_batted_rate": 8.6,
"hard_hit_percent": 38.4,
"avg_best_speed": 76.8839,
"avg_hyper_speed": 94.0052,
"whiff_percent": 26.9,
"swing_percent": 53.1
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.8638,
"command_and_miss": 0.8221,
"regression_edge": -0.2286,
"xwoba_edge": 1.5429,
"barrel_edge": -0.2889,
"hard_hit_edge": -0.0857,
"whiff_edge": 0.2429,
"bb_edge": 1.05,
"pitch_design_score": -0.0937
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "701656",
"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": 88.19496107158342,
"release_spin_rate": 2417.1147694148563,
"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": 88.19496107158342,
"release_spin_rate": 2417.1147694148563,
"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.195,
"release_spin_rate": 2417.1148,
"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.0937,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.6693,
"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.6378,
"sample_weight": 0.956,
"run_prevention_factor": 0.9458,
"strikeout_factor": 1.0541,
"walk_factor": 0.9197,
"homer_factor": 0.9811,
"woba_minus_xwoba": -0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "701656",
"espn_id": 4917878,
"player_name": "Logan Henderson",
"team": "MIL",
"role": "pitcher",
"espn_rank": 46,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 46,
"gp_value": 14.0,
"gp_rank": 467,
"gs_value": 14.0,
"gs_rank": 140,
"qs_value": 6.0,
"qs_rank": 89,
"era_value": 2.4759,
"era_rank": null,
"w_value": 9.0,
"w_rank": 37,
"l_value": 2.0,
"l_rank": 318,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 76.1,
"ip_rank": 162,
"h_value": 49.0,
"h_rank": 237,
"er_value": 21.0,
"er_rank": 290,
"hr_value": 11.0,
"hr_rank": 140,
"bb_value": 14.0,
"bb_rank": 385,
"k_value": 86.0,
"k_rank": 129,
"k_per_9_value": 10.139738,
"k_per_9_rank": 21,
"whip_value": 0.8253,
"whip_rank": null,
"war_value": 2.64,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9482,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9482,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.9232,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9819,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0517,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 25,
"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."
}
],
"provenance": {
"prediction": "output/games/20260903_MIL@CHC.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"
}
} |
| 20260903 | 20260903_MIL@CHC | home | Kevin Gausman | Kevin Gausman | True | 5.2 | 7.0 | 4 | 5 | 1 | -4 | 6/5 | 4/1 | 7/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.51931330472103,
"WHIP": 1.2746781115879828,
"IP": 155.1,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.548,
"recent_avg_IP": 5.6,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.151,
"sample_weight": 1.0,
"run_prevention_factor": 0.9872,
"strikeout_factor": 1.0217,
"walk_factor": 0.95,
"homer_factor": 1.0003,
"regression_flag": "neutral",
"k_percent": 23.8,
"bb_percent": 6.6,
"woba": 0.313,
"xwoba": 0.306,
"barrel_percent": 7.3,
"hard_hit_percent": 38.6,
"whiff_percent": 27.1
},
"espn_rank": {
"rank": 179,
"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": 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": "592332",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.0,
"ER": 16.0,
"R": 16.0,
"H": 27.0,
"BB": 7.0,
"SO": 29.0,
"HR": 5.0,
"BF": 116.0,
"Pitches": 471.0
},
"per_game": {
"IP": 5.2,
"ER": 3.2,
"R": 3.2,
"H": 5.4,
"BB": 1.4,
"SO": 5.8,
"HR": 1.0,
"BF": 23.2,
"Pitches": 94.2
},
"rates": {
"ERA": 5.1429,
"WHIP": 1.2143,
"ER_per_IP": 0.57143,
"H_per_IP": 0.96429,
"BB_per_IP": 0.25,
"SO_per_IP": 1.03571,
"HR_per_IP": 0.17857
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.1,
"ER": 31.0,
"R": 35.0,
"H": 59.0,
"BB": 19.0,
"SO": 56.0,
"HR": 5.0,
"BF": 237.0,
"Pitches": 948.0
},
"per_game": {
"IP": 5.1,
"ER": 3.1,
"R": 3.5,
"H": 5.9,
"BB": 1.9,
"SO": 5.6,
"HR": 0.5,
"BF": 23.7,
"Pitches": 94.8
},
"rates": {
"ERA": 5.135,
"WHIP": 1.4356,
"ER_per_IP": 0.57055,
"H_per_IP": 1.08589,
"BB_per_IP": 0.34969,
"SO_per_IP": 1.03067,
"HR_per_IP": 0.09202
}
},
"season": {
"games": 28,
"totals": {
"IP": 155.1,
"ER": 78.0,
"R": 84.0,
"H": 155.0,
"BB": 43.0,
"SO": 156.0,
"HR": 20.0,
"BF": 656.0,
"Pitches": 2611.0
},
"per_game": {
"IP": 5.2,
"ER": 2.7857,
"R": 3.0,
"H": 5.5357,
"BB": 1.5357,
"SO": 5.5714,
"HR": 0.7143,
"BF": 23.4286,
"Pitches": 93.25
},
"rates": {
"ERA": 4.5193,
"WHIP": 1.2747,
"ER_per_IP": 0.50215,
"H_per_IP": 0.99785,
"BB_per_IP": 0.27682,
"SO_per_IP": 1.00429,
"HR_per_IP": 0.12876
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 3.052,
"predicted_H": 5.609,
"predicted_BB": 1.684,
"predicted_SO": 5.647,
"predicted_HR": 0.777,
"predicted_ERA": 4.934,
"predicted_WHIP": 1.3099
}
},
"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": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 3.052,
"final": 3.4445,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.609,
"final": 5.7709,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.684,
"final": 2.6428,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 5.647,
"final": 5.3791,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.777,
"final": 0.4553,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.934,
"final": 4.934,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3099,
"final": 1.3099,
"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": 31,
"H": 59,
"BB": 19,
"SO": 56,
"HR": 5,
"ERA": 5.134969325153374,
"WHIP": 1.4355828220858895,
"K9": 9.276073619631902,
"HR9": 0.8282208588957055,
"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-08-29T00:00:00"
},
"recent_form_boost": 1.0891689557539004,
"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": 4.0,
"predicted_SO": 5.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "592332",
"player_name": "Kevin Gausman",
"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": 4.0,
"predicted_ER": 4.0,
"predicted_H": 6.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": 4.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 4.0,
"predicted_SO": 7.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": 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": 5.0,
"after": 7.0,
"delta": 2.0,
"percent_delta": 0.4,
"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": 5.0,
"after": 7.0,
"delta": 2.0,
"percent_delta": 0.4,
"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": 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": 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": 5.0,
"after": 7.0,
"delta": 2.0,
"percent_delta": 0.4,
"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": 5.0,
"after": 7.0,
"delta": 2.0,
"percent_delta": 0.4,
"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": "CHC",
"games": 140,
"wins": 78,
"losses": 62,
"win_pct": 0.5571,
"runs_scored": 751.0,
"runs_allowed": 619.0,
"run_differential": 132.0,
"run_differential_per_game": 0.9429,
"avg_runs_scored": 5.3643,
"avg_runs_allowed": 4.4214,
"offense_index": 1.1933,
"defense_index": 1.0167,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 8.6,
"avg_runs_allowed": 5.2,
"run_differential": 34.0
},
"available": true,
"quality_score": 0.1289
},
"opponent": {
"team": "MIL",
"games": 140,
"wins": 87,
"losses": 53,
"win_pct": 0.6214,
"runs_scored": 704.0,
"runs_allowed": 532.0,
"run_differential": 172.0,
"run_differential_per_game": 1.2286,
"avg_runs_scored": 5.0286,
"avg_runs_allowed": 3.8,
"offense_index": 1.1186,
"defense_index": 1.183,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 4.7,
"run_differential": 9.0
},
"available": true,
"quality_score": 0.2885
},
"edges": {
"quality_edge": -0.1596,
"offense_edge": 0.1933,
"opponent_offense_edge": 0.1186,
"defense_strength": 0.0167,
"opponent_defense_weakness": -0.183,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9894,
"run_prevention": 1.0253,
"strikeout": 0.9857
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "592332",
"profile": {
"available": true,
"pitcher_id": "592332",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 601.0,
"k_percent": 23.8,
"bb_percent": 6.6,
"woba": 0.313,
"xwoba": 0.306,
"sweet_spot_percent": 34.6,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.6,
"avg_best_speed": 76.4804,
"avg_hyper_speed": 94.304,
"whiff_percent": 27.1,
"swing_percent": 49.8
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.0811,
"command_and_miss": 0.3421,
"regression_edge": 0.2,
"xwoba_edge": 0.1429,
"barrel_edge": 0.0,
"hard_hit_edge": -0.1143,
"whiff_edge": 0.2714,
"bb_edge": 0.625,
"pitch_design_score": -0.0423
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "592332",
"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.11256087645637,
"release_spin_rate": 1999.5502813601959,
"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.11256087645637,
"release_spin_rate": 1999.5502813601959,
"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.1126,
"release_spin_rate": 1999.5503,
"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.0423,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.3022,
"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.151,
"sample_weight": 1.0,
"run_prevention_factor": 0.9872,
"strikeout_factor": 1.0217,
"walk_factor": 0.95,
"homer_factor": 1.0003,
"woba_minus_xwoba": 0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "592332",
"espn_id": 32667,
"player_name": "Kevin Gausman",
"team": "CHC",
"role": "pitcher",
"espn_rank": 179,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 179,
"gp_value": 28.0,
"gp_rank": 229,
"gs_value": 28.0,
"gs_rank": 6,
"qs_value": 13.0,
"qs_rank": 24,
"era_value": 4.5193,
"era_rank": 46.0,
"w_value": 8.0,
"w_rank": 58,
"l_value": 11.0,
"l_rank": 9,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 155.1,
"ip_rank": 18,
"h_value": 155.0,
"h_rank": 9,
"er_value": 78.0,
"er_rank": 9,
"hr_value": 20.0,
"hr_rank": 29,
"bb_value": 43.0,
"bb_rank": 61,
"k_value": 156.0,
"k_rank": 22,
"k_per_9_value": 9.038626,
"k_per_9_rank": 33,
"whip_value": 1.2746,
"whip_rank": 36.0,
"war_value": 0.98,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9872,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.9872,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.95,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0003,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0217,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 6,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 4,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 27,
"Pitches": 117,
"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": "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: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260903_MIL@CHC.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"
}
} |
| 20260903 | 20260903_OAK@SEA | away | Jack Perkins | Jack Perkins | True | 4.0 | 3.0 | -3 | 3 | 3 | 0 | 5/4 | 1/5 | 2/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 6.41958041958042,
"WHIP": 1.4895104895104896,
"IP": 95.1,
"games_started": null,
"games_pitched": 32,
"role_avg_IP": 4.639,
"recent_avg_IP": 4.8,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0641,
"sample_weight": 1.0,
"run_prevention_factor": 0.9946,
"strikeout_factor": 1.0297,
"walk_factor": 1.012,
"homer_factor": 1.0221,
"regression_flag": "positive_pitcher_regression",
"k_percent": 25.2,
"bb_percent": 9.7,
"woba": 0.356,
"xwoba": 0.309,
"barrel_percent": 8.8,
"hard_hit_percent": 37.3,
"whiff_percent": 27.1
},
"espn_rank": {
"rank": 841,
"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": 19.162,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7931,
"prior_weight": 0.2069
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "678022",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 32,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 21.2,
"ER": 13.0,
"R": 17.0,
"H": 25.0,
"BB": 14.0,
"SO": 20.0,
"HR": 4.0,
"BF": 101.0,
"Pitches": 391.0
},
"per_game": {
"IP": 4.1,
"ER": 2.6,
"R": 3.4,
"H": 5.0,
"BB": 2.8,
"SO": 4.0,
"HR": 0.8,
"BF": 20.2,
"Pitches": 78.2
},
"rates": {
"ERA": 5.4,
"WHIP": 1.8,
"ER_per_IP": 0.6,
"H_per_IP": 1.15385,
"BB_per_IP": 0.64615,
"SO_per_IP": 0.92308,
"HR_per_IP": 0.18462
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 44.1,
"ER": 34.0,
"R": 38.0,
"H": 49.0,
"BB": 25.0,
"SO": 47.0,
"HR": 12.0,
"BF": 205.0,
"Pitches": 796.0
},
"per_game": {
"IP": 4.1,
"ER": 3.4,
"R": 3.8,
"H": 4.9,
"BB": 2.5,
"SO": 4.7,
"HR": 1.2,
"BF": 20.5,
"Pitches": 79.6
},
"rates": {
"ERA": 6.9023,
"WHIP": 1.6692,
"ER_per_IP": 0.76692,
"H_per_IP": 1.10526,
"BB_per_IP": 0.56391,
"SO_per_IP": 1.06015,
"HR_per_IP": 0.27068
}
},
"season": {
"games": 32,
"totals": {
"IP": 95.1,
"ER": 68.0,
"R": 74.0,
"H": 100.0,
"BB": 42.0,
"SO": 109.0,
"HR": 18.0,
"BF": 433.0,
"Pitches": 1673.0
},
"per_game": {
"IP": 3.0,
"ER": 2.125,
"R": 2.3125,
"H": 3.125,
"BB": 1.3125,
"SO": 3.4062,
"HR": 0.5625,
"BF": 13.5312,
"Pitches": 52.2812
},
"rates": {
"ERA": 6.4196,
"WHIP": 1.4895,
"ER_per_IP": 0.71329,
"H_per_IP": 1.04895,
"BB_per_IP": 0.44056,
"SO_per_IP": 1.14336,
"HR_per_IP": 0.18881
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.695,
"predicted_H": 4.552,
"predicted_BB": 2.237,
"predicted_SO": 4.188,
"predicted_HR": 0.844,
"predicted_ERA": 5.788,
"predicted_WHIP": 1.62
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4374,
"form_weight": 0.5626,
"form_reliability": 0.7931,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.162,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7931,
"prior_weight": 0.2069
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.1,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.695,
"final": 2.391,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.552,
"final": 4.3105,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.237,
"final": 1.6959,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.188,
"final": 3.2309,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.844,
"final": 1.3497,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.788,
"final": 5.788,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.62,
"final": 1.62,
"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.1,
"ER": 34,
"H": 49,
"BB": 25,
"SO": 47,
"HR": 12,
"ERA": 6.902255639097745,
"WHIP": 1.6691729323308273,
"K9": 9.541353383458647,
"HR9": 2.43609022556391,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-29T00:00:00"
},
"recent_form_boost": 1.2938284188287656,
"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": 1.0,
"predicted_SO": 2.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.162,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7931,
"prior_weight": 0.2069
}
},
{
"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": 4,
"predicted_BB": 1,
"predicted_SO": 2,
"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.0,
"predicted_ER": 3,
"predicted_H": 5,
"predicted_BB": 1,
"predicted_SO": 2,
"predicted_HR": 2
}
}
],
"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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 4.6667,
"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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 4.0,
"predicted_SO": 2.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": 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.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"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": 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": "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": 3.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 4.0,
"predicted_SO": 2.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": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"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.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"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": 2,
"boosted_metrics": 2,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.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": 3.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 4.0,
"predicted_R": 3.0,
"predicted_SO": 2.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": 5.0,
"after": 5.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.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"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": 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": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"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.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"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": 3,
"boosted_metrics": 2,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 3,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"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": "OAK",
"games": 140,
"wins": 54,
"losses": 86,
"win_pct": 0.3857,
"runs_scored": 611.0,
"runs_allowed": 805.0,
"run_differential": -194.0,
"run_differential_per_game": -1.3857,
"avg_runs_scored": 4.3643,
"avg_runs_allowed": 5.75,
"offense_index": 0.971,
"defense_index": 0.7817,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 5.6,
"run_differential": -6.0
},
"available": true,
"quality_score": -0.3017
},
"opponent": {
"team": "SEA",
"games": 140,
"wins": 66,
"losses": 74,
"win_pct": 0.4714,
"runs_scored": 555.0,
"runs_allowed": 620.0,
"run_differential": -65.0,
"run_differential_per_game": -0.4643,
"avg_runs_scored": 3.9643,
"avg_runs_allowed": 4.4286,
"offense_index": 0.882,
"defense_index": 1.015,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 6.5,
"run_differential": -21.0
},
"available": true,
"quality_score": -0.1161
},
"edges": {
"quality_edge": -0.1856,
"offense_edge": -0.029,
"opponent_offense_edge": -0.118,
"defense_strength": -0.2183,
"opponent_defense_weakness": -0.015,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9907,
"run_prevention": 1.0122,
"strikeout": 1.0039
},
"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": 379.0,
"k_percent": 25.2,
"bb_percent": 9.7,
"woba": 0.356,
"xwoba": 0.309,
"sweet_spot_percent": 35.5,
"barrel_batted_rate": 8.8,
"hard_hit_percent": 37.3,
"avg_best_speed": 78.8295,
"avg_hyper_speed": 93.5558,
"whiff_percent": 27.1,
"swing_percent": 48.2
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.2656,
"command_and_miss": 0.2771,
"regression_edge": 1.3429,
"xwoba_edge": 0.0571,
"barrel_edge": -0.3333,
"hard_hit_edge": 0.0714,
"whiff_edge": 0.2714,
"bb_edge": -0.15,
"pitch_design_score": 0.0812
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "678022",
"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.31862708436176,
"release_spin_rate": 2227.278752223051,
"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.31862708436176,
"release_spin_rate": 2227.278752223051,
"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.3186,
"release_spin_rate": 2227.2788,
"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.0812,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.5802,
"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.0641,
"sample_weight": 1.0,
"run_prevention_factor": 0.9946,
"strikeout_factor": 1.0297,
"walk_factor": 1.012,
"homer_factor": 1.0221,
"woba_minus_xwoba": 0.047,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "678022",
"espn_id": 4418686,
"player_name": "Jack Perkins",
"team": "ATH",
"role": "pitcher",
"espn_rank": 841,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 841,
"gp_value": 32.0,
"gp_rank": 201,
"gs_value": 12.0,
"gs_rank": 154,
"qs_value": 0.0,
"qs_rank": 207,
"era_value": 6.4195,
"era_rank": null,
"w_value": 3.0,
"w_rank": 236,
"l_value": 10.0,
"l_rank": 13,
"sv_value": 3.0,
"sv_rank": 66,
"hld_value": 2.0,
"hld_rank": 225,
"ip_value": 95.1,
"ip_rank": 124,
"h_value": 100.0,
"h_rank": 107,
"er_value": 68.0,
"er_rank": 29,
"hr_value": 18.0,
"hr_rank": 46,
"bb_value": 42.0,
"bb_rank": 65,
"k_value": 109.0,
"k_rank": 81,
"k_per_9_value": 10.29021,
"k_per_9_rank": 17,
"whip_value": 1.4895,
"whip_rank": null,
"war_value": -1.15,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 0.9946,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 0.9946,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.012,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0221,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0297,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 2,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 19,
"Pitches": 69,
"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": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +4."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260903_OAK@SEA.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"
}
} |
| 20260903 | 20260903_OAK@SEA | home | Kade Anderson | Kade Anderson | True | 4.1 | 5.0 | 2 | 3 | 4 | 1 | 5/7 | 0/2 | 4/3 | Last 10 before this game (2 available){
"model_context": {
"embedded_season": {
"ERA": 4.5,
"WHIP": 1.3,
"IP": 10.0,
"games_started": null,
"games_pitched": 2,
"role_avg_IP": 5.0,
"recent_avg_IP": 5.0,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2678,
"sample_weight": 0.45,
"run_prevention_factor": 0.9772,
"strikeout_factor": 0.9866,
"walk_factor": 1.0279,
"homer_factor": 0.9544,
"regression_flag": "positive_pitcher_regression",
"k_percent": 19.5,
"bb_percent": 12.2,
"woba": 0.334,
"xwoba": 0.235,
"barrel_percent": 7.1,
"hard_hit_percent": 32.1,
"whiff_percent": 22.4
},
"espn_rank": {
"rank": 374,
"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": "807739",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 2,
"reference_playing_time": 4.333,
"windows": {
"last_5": {
"games": 2,
"totals": {
"IP": 10.0,
"ER": 5.0,
"R": 5.0,
"H": 8.0,
"BB": 5.0,
"SO": 8.0,
"HR": 2.0,
"BF": 41.0,
"Pitches": 166.0
},
"per_game": {
"IP": 5.0,
"ER": 2.5,
"R": 2.5,
"H": 4.0,
"BB": 2.5,
"SO": 4.0,
"HR": 1.0,
"BF": 20.5,
"Pitches": 83.0
},
"rates": {
"ERA": 4.5,
"WHIP": 1.3,
"ER_per_IP": 0.5,
"H_per_IP": 0.8,
"BB_per_IP": 0.5,
"SO_per_IP": 0.8,
"HR_per_IP": 0.2
}
},
"last_10": {
"games": 2,
"totals": {
"IP": 10.0,
"ER": 5.0,
"R": 5.0,
"H": 8.0,
"BB": 5.0,
"SO": 8.0,
"HR": 2.0,
"BF": 41.0,
"Pitches": 166.0
},
"per_game": {
"IP": 5.0,
"ER": 2.5,
"R": 2.5,
"H": 4.0,
"BB": 2.5,
"SO": 4.0,
"HR": 1.0,
"BF": 20.5,
"Pitches": 83.0
},
"rates": {
"ERA": 4.5,
"WHIP": 1.3,
"ER_per_IP": 0.5,
"H_per_IP": 0.8,
"BB_per_IP": 0.5,
"SO_per_IP": 0.8,
"HR_per_IP": 0.2
}
},
"season": {
"games": 2,
"totals": {
"IP": 10.0,
"ER": 5.0,
"R": 5.0,
"H": 8.0,
"BB": 5.0,
"SO": 8.0,
"HR": 2.0,
"BF": 41.0,
"Pitches": 166.0
},
"per_game": {
"IP": 5.0,
"ER": 2.5,
"R": 2.5,
"H": 4.0,
"BB": 2.5,
"SO": 4.0,
"HR": 1.0,
"BF": 20.5,
"Pitches": 83.0
},
"rates": {
"ERA": 4.5,
"WHIP": 1.3,
"ER_per_IP": 0.5,
"H_per_IP": 0.8,
"BB_per_IP": 0.5,
"SO_per_IP": 0.8,
"HR_per_IP": 0.2
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.254,
"predicted_H": 4.178,
"predicted_BB": 1.844,
"predicted_SO": 4.068,
"predicted_HR": 0.732,
"predicted_ERA": 4.4844,
"predicted_WHIP": 1.3311
}
},
"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.1,
"form": 4.2,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.254,
"final": 2.7402,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.178,
"final": 4.7138,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.844,
"final": 0.6421,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.068,
"final": 4.0237,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.732,
"final": 1.5585,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4844,
"final": 4.4844,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3311,
"final": 1.3311,
"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": 10.0,
"ER": 5,
"H": 8,
"BB": 5,
"SO": 8,
"HR": 2,
"ERA": 4.5,
"WHIP": 1.3,
"K9": 7.2,
"HR9": 1.8,
"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-08-29T00:00:00"
},
"recent_form_boost": 1.0046894852281163,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.333333333333333,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 0.0,
"predicted_SO": 4.0,
"predicted_HR": 2.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
}
}
],
"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": 0.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 4.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": 0.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 4.1,
"predicted_R": 3.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": 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": 5.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.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"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": 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": 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": 5.0,
"after": 5.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.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"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": 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": "SEA",
"games": 140,
"wins": 66,
"losses": 74,
"win_pct": 0.4714,
"runs_scored": 555.0,
"runs_allowed": 620.0,
"run_differential": -65.0,
"run_differential_per_game": -0.4643,
"avg_runs_scored": 3.9643,
"avg_runs_allowed": 4.4286,
"offense_index": 0.882,
"defense_index": 1.015,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 6.5,
"run_differential": -21.0
},
"available": true,
"quality_score": -0.1161
},
"opponent": {
"team": "OAK",
"games": 140,
"wins": 54,
"losses": 86,
"win_pct": 0.3857,
"runs_scored": 611.0,
"runs_allowed": 805.0,
"run_differential": -194.0,
"run_differential_per_game": -1.3857,
"avg_runs_scored": 4.3643,
"avg_runs_allowed": 5.75,
"offense_index": 0.971,
"defense_index": 0.7817,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 5.6,
"run_differential": -6.0
},
"available": true,
"quality_score": -0.3017
},
"edges": {
"quality_edge": 0.1856,
"offense_edge": -0.118,
"opponent_offense_edge": -0.029,
"defense_strength": 0.015,
"opponent_defense_weakness": 0.2183,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.009,
"run_prevention": 0.9846,
"strikeout": 1.0079
},
"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": 0.0,
"k_percent": 19.5,
"bb_percent": 12.2,
"woba": 0.334,
"xwoba": 0.235,
"sweet_spot_percent": 28.6,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 32.1,
"avg_best_speed": 76.6179,
"avg_hyper_speed": 91.7814,
"whiff_percent": 22.4,
"swing_percent": 51.2
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.9141,
"command_and_miss": -0.4493,
"regression_edge": 2.0,
"xwoba_edge": 2.1714,
"barrel_edge": 0.0444,
"hard_hit_edge": 0.8143,
"whiff_edge": -0.4,
"bb_edge": -0.775,
"pitch_design_score": 0.0
},
"pitch_movement_profile": {
"available": false,
"pitcher_id": "807739",
"reason": "pitcher_movement_profile_has_no_pitches"
},
"quality_score": 0.2678,
"sample_weight": 0.45,
"run_prevention_factor": 0.9772,
"strikeout_factor": 0.9866,
"walk_factor": 1.0279,
"homer_factor": 0.9544,
"woba_minus_xwoba": 0.099,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "807739",
"espn_id": 5198748,
"player_name": "Kade Anderson",
"team": "SEA",
"role": "pitcher",
"espn_rank": 374,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 374,
"gp_value": 2.0,
"gp_rank": 741,
"gs_value": 2.0,
"gs_rank": 270,
"qs_value": 0.0,
"qs_rank": 207,
"era_value": 4.5,
"era_rank": null,
"w_value": 0.0,
"w_rank": 521,
"l_value": 0.0,
"l_rank": 569,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 10.0,
"ip_rank": 603,
"h_value": 8.0,
"h_rank": 650,
"er_value": 5.0,
"er_rank": 640,
"hr_value": 2.0,
"hr_rank": 508,
"bb_value": 5.0,
"bb_rank": 609,
"k_value": 8.0,
"k_rank": 613,
"k_per_9_value": 7.2,
"k_per_9_rank": 27,
"whip_value": 1.3,
"whip_rank": null,
"war_value": 0.12,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9897,
"adjusted": 2
},
"predicted_H": {
"original": 3.0,
"factor": 0.9897,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0126,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9795,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.994,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 4,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 18,
"Pitches": 82,
"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": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
}
],
"provenance": {
"prediction": "output/games/20260903_OAK@SEA.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"
}
} |
| 20260903 | 20260903_SF@PIT | away | Blade Tidwell | Blade Tidwell | True | 5.0 | 5.0 | 0 | 2 | 2 | 0 | 5/2 | 0/5 | 8/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.539823008849558,
"WHIP": 1.2212389380530975,
"IP": 37.2,
"games_started": null,
"games_pitched": 13,
"role_avg_IP": 5.133,
"recent_avg_IP": 5.133,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0569,
"sample_weight": 0.45,
"run_prevention_factor": 0.9952,
"strikeout_factor": 0.99,
"walk_factor": 0.9937,
"homer_factor": 1.0082,
"regression_flag": "neutral",
"k_percent": 20.1,
"bb_percent": 8.4,
"woba": 0.309,
"xwoba": 0.296,
"barrel_percent": 9.3,
"hard_hit_percent": 37.0,
"whiff_percent": 23.1
},
"espn_rank": {
"rank": 367,
"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": 7.571,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6023,
"prior_weight": 0.3977
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "694918",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 13,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.2,
"ER": 15.0,
"R": 15.0,
"H": 23.0,
"BB": 10.0,
"SO": 21.0,
"HR": 4.0,
"BF": 107.0,
"Pitches": 452.0
},
"per_game": {
"IP": 5.0,
"ER": 3.0,
"R": 3.0,
"H": 4.6,
"BB": 2.0,
"SO": 4.2,
"HR": 0.8,
"BF": 21.4,
"Pitches": 90.4
},
"rates": {
"ERA": 5.2597,
"WHIP": 1.2857,
"ER_per_IP": 0.58442,
"H_per_IP": 0.8961,
"BB_per_IP": 0.38961,
"SO_per_IP": 0.81818,
"HR_per_IP": 0.15584
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 32.2,
"ER": 19.0,
"R": 19.0,
"H": 31.0,
"BB": 12.0,
"SO": 27.0,
"HR": 5.0,
"BF": 138.0,
"Pitches": 565.0
},
"per_game": {
"IP": 3.1,
"ER": 1.9,
"R": 1.9,
"H": 3.1,
"BB": 1.2,
"SO": 2.7,
"HR": 0.5,
"BF": 13.8,
"Pitches": 56.5
},
"rates": {
"ERA": 5.2347,
"WHIP": 1.3163,
"ER_per_IP": 0.58163,
"H_per_IP": 0.94898,
"BB_per_IP": 0.36735,
"SO_per_IP": 0.82653,
"HR_per_IP": 0.15306
}
},
"season": {
"games": 13,
"totals": {
"IP": 37.2,
"ER": 19.0,
"R": 19.0,
"H": 33.0,
"BB": 13.0,
"SO": 31.0,
"HR": 5.0,
"BF": 154.0,
"Pitches": 634.0
},
"per_game": {
"IP": 3.0,
"ER": 1.4615,
"R": 1.4615,
"H": 2.5385,
"BB": 1.0,
"SO": 2.3846,
"HR": 0.3846,
"BF": 11.8462,
"Pitches": 48.7692
},
"rates": {
"ERA": 4.5398,
"WHIP": 1.2212,
"ER_per_IP": 0.50442,
"H_per_IP": 0.87611,
"BB_per_IP": 0.34513,
"SO_per_IP": 0.82301,
"HR_per_IP": 0.13274
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.379,
"predicted_H": 4.123,
"predicted_BB": 1.64,
"predicted_SO": 3.829,
"predicted_HR": 0.656,
"predicted_ERA": 4.8569,
"predicted_WHIP": 1.3074
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.518,
"form_weight": 0.482,
"form_reliability": 0.6023,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.571,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6023,
"prior_weight": 0.3977
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.379,
"final": 2.1827,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.123,
"final": 4.5773,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.64,
"final": 0.7904,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 3.829,
"final": 5.9897,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.656,
"final": 0.3162,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.8569,
"final": 4.8569,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3074,
"final": 1.3074,
"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": 32.2,
"ER": 19,
"H": 31,
"BB": 12,
"SO": 27,
"HR": 5,
"ERA": 5.2346938775510194,
"WHIP": 1.3163265306122447,
"K9": 7.4387755102040805,
"HR9": 1.3775510204081631,
"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-08-28T00:00:00"
},
"recent_form_boost": 1.0974065606117944,
"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": 0.0,
"predicted_SO": 8.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.571,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6023,
"prior_weight": 0.3977
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "694918",
"player_name": "Blade Tidwell",
"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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"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": 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": 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": 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": 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": 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,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SF",
"games": 140,
"wins": 58,
"losses": 82,
"win_pct": 0.4143,
"runs_scored": 584.0,
"runs_allowed": 654.0,
"run_differential": -70.0,
"run_differential_per_game": -0.5,
"avg_runs_scored": 4.1714,
"avg_runs_allowed": 4.6714,
"offense_index": 0.927,
"defense_index": 0.9633,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 6.1,
"avg_runs_allowed": 5.1,
"run_differential": 10.0
},
"available": true,
"quality_score": -0.099
},
"opponent": {
"team": "PIT",
"games": 140,
"wins": 68,
"losses": 72,
"win_pct": 0.4857,
"runs_scored": 686.0,
"runs_allowed": 660.0,
"run_differential": 26.0,
"run_differential_per_game": 0.1857,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 4.7143,
"offense_index": 1.0889,
"defense_index": 0.9545,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 4.0,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.0105
},
"edges": {
"quality_edge": -0.1095,
"offense_edge": -0.073,
"opponent_offense_edge": 0.0889,
"defense_strength": -0.0367,
"opponent_defense_weakness": 0.0455,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.991,
"run_prevention": 1.0234,
"strikeout": 0.9896
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "694918",
"profile": {
"available": true,
"pitcher_id": "694918",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 110.0,
"k_percent": 20.1,
"bb_percent": 8.4,
"woba": 0.309,
"xwoba": 0.296,
"sweet_spot_percent": 26.9,
"barrel_batted_rate": 9.3,
"hard_hit_percent": 37.0,
"avg_best_speed": 76.4141,
"avg_hyper_speed": 93.9119,
"whiff_percent": 23.1,
"swing_percent": 45.7
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.2488,
"command_and_miss": -0.1857,
"regression_edge": 0.3714,
"xwoba_edge": 0.4286,
"barrel_edge": -0.4444,
"hard_hit_edge": 0.1143,
"whiff_edge": -0.3,
"bb_edge": 0.175,
"pitch_design_score": -0.0215
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "694918",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 76,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 76,
"pitch_usage": 0.0,
"release_speed": 89.48410615286664,
"release_spin_rate": 2488.224804520724,
"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": 76,
"pitch_usage": 0.0,
"release_speed": 89.48410615286664,
"release_spin_rate": 2488.224804520724,
"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.4841,
"release_spin_rate": 2488.2248,
"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.0215,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.1536,
"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.0569,
"sample_weight": 0.45,
"run_prevention_factor": 0.9952,
"strikeout_factor": 0.99,
"walk_factor": 0.9937,
"homer_factor": 1.0082,
"woba_minus_xwoba": 0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "694918",
"espn_id": 4719088,
"player_name": "Blade Tidwell",
"team": "SF",
"role": "pitcher",
"espn_rank": 367,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 367,
"gp_value": 13.0,
"gp_rank": 477,
"gs_value": 5.0,
"gs_rank": 215,
"qs_value": 0.0,
"qs_rank": 207,
"era_value": 4.5398,
"era_rank": null,
"w_value": 0.0,
"w_rank": 521,
"l_value": 1.0,
"l_rank": 420,
"sv_value": 1.0,
"sv_rank": 133,
"hld_value": 1.0,
"hld_rank": 264,
"ip_value": 37.2,
"ip_rank": 372,
"h_value": 33.0,
"h_rank": 374,
"er_value": 19.0,
"er_rank": 321,
"hr_value": 5.0,
"hr_rank": 303,
"bb_value": 13.0,
"bb_rank": 408,
"k_value": 31.0,
"k_rank": 402,
"k_per_9_value": 7.40708,
"k_per_9_rank": 29,
"whip_value": 1.2212,
"whip_rank": null,
"war_value": 0.13,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9978,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 0.9978,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9972,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0037,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9955,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 20,
"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 +0."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +5."
}
],
"provenance": {
"prediction": "output/games/20260903_SF@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"
}
} |
| 20260903 | 20260903_SF@PIT | home | Lake Bachar | Lake Bachar | True | 5.0 | 2.1 | -8 | 1 | 0 | -1 | 1/0 | 1/2 | 5/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.106194690265487,
"WHIP": 1.008849557522124,
"IP": 75.1,
"games_started": null,
"games_pitched": 45,
"role_avg_IP": 2.333,
"recent_avg_IP": 2.133,
"last_start_IP": 2.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2842,
"sample_weight": 1.0,
"run_prevention_factor": 0.9758,
"strikeout_factor": 1.0406,
"walk_factor": 1.012,
"homer_factor": 0.99,
"regression_flag": "neutral",
"k_percent": 25.0,
"bb_percent": 9.7,
"woba": 0.286,
"xwoba": 0.291,
"barrel_percent": 8.7,
"hard_hit_percent": 34.7,
"whiff_percent": 29.2
},
"espn_rank": {
"rank": 195,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 75.1,
"season_ERA": 3.106,
"season_WHIP": 1.009,
"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": 15.142,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7518,
"prior_weight": 0.2482
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669199",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 45,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 9.2,
"ER": 2.0,
"R": 2.0,
"H": 4.0,
"BB": 7.0,
"SO": 9.0,
"HR": 1.0,
"BF": 38.0,
"Pitches": 163.0
},
"per_game": {
"IP": 2.0,
"ER": 0.4,
"R": 0.4,
"H": 0.8,
"BB": 1.4,
"SO": 1.8,
"HR": 0.2,
"BF": 7.6,
"Pitches": 32.6
},
"rates": {
"ERA": 1.8621,
"WHIP": 1.1379,
"ER_per_IP": 0.2069,
"H_per_IP": 0.41379,
"BB_per_IP": 0.72414,
"SO_per_IP": 0.93103,
"HR_per_IP": 0.10345
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 20.2,
"ER": 6.0,
"R": 6.0,
"H": 10.0,
"BB": 9.0,
"SO": 18.0,
"HR": 4.0,
"BF": 79.0,
"Pitches": 324.0
},
"per_game": {
"IP": 2.0,
"ER": 0.6,
"R": 0.6,
"H": 1.0,
"BB": 0.9,
"SO": 1.8,
"HR": 0.4,
"BF": 7.9,
"Pitches": 32.4
},
"rates": {
"ERA": 2.6129,
"WHIP": 0.9194,
"ER_per_IP": 0.29032,
"H_per_IP": 0.48387,
"BB_per_IP": 0.43548,
"SO_per_IP": 0.87097,
"HR_per_IP": 0.19355
}
},
"season": {
"games": 45,
"totals": {
"IP": 75.1,
"ER": 26.0,
"R": 28.0,
"H": 48.0,
"BB": 28.0,
"SO": 77.0,
"HR": 12.0,
"BF": 302.0,
"Pitches": 1214.0
},
"per_game": {
"IP": 1.2,
"ER": 0.5778,
"R": 0.6222,
"H": 1.0667,
"BB": 0.6222,
"SO": 1.7111,
"HR": 0.2667,
"BF": 6.7111,
"Pitches": 26.9778
},
"rates": {
"ERA": 3.1062,
"WHIP": 1.0088,
"ER_per_IP": 0.34513,
"H_per_IP": 0.63717,
"BB_per_IP": 0.37168,
"SO_per_IP": 1.02212,
"HR_per_IP": 0.15929
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.0,
"predicted_ER": 0.92,
"predicted_H": 1.729,
"predicted_BB": 1.451,
"predicted_SO": 2.662,
"predicted_HR": 0.418,
"predicted_ERA": 2.896,
"predicted_WHIP": 1.112
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4549,
"form_weight": 0.5451,
"form_reliability": 0.7518,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.142,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7518,
"prior_weight": 0.2482
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 3.0,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 0.92,
"final": 0.9564,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 1.729,
"final": 1.3974,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.451,
"final": 1.2459,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 2.662,
"final": 3.7255,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.418,
"final": 0.2279,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.896,
"final": 2.896,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.112,
"final": 1.112,
"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": 20.2,
"ER": 6,
"H": 10,
"BB": 9,
"SO": 18,
"HR": 4,
"ERA": 2.6129032258064515,
"WHIP": 0.9193548387096774,
"K9": 7.838709677419354,
"HR9": 1.7419354838709677,
"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-08-29T00:00:00"
},
"recent_form_boost": 0.8598353590490783,
"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": 1.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.142,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7518,
"prior_weight": 0.2482
}
},
{
"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": 1,
"predicted_H": 1,
"predicted_BB": 1,
"predicted_SO": 5,
"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": 1,
"predicted_H": 1,
"predicted_BB": 1,
"predicted_SO": 5,
"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": 1.0,
"predicted_ER": 1.0,
"predicted_H": 1.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": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.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": 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": 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.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": 1.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.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": 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": 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": {}
},
{
"index": 4,
"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": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"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": 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": 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": 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": 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": 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.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": 140,
"wins": 68,
"losses": 72,
"win_pct": 0.4857,
"runs_scored": 686.0,
"runs_allowed": 660.0,
"run_differential": 26.0,
"run_differential_per_game": 0.1857,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 4.7143,
"offense_index": 1.0889,
"defense_index": 0.9545,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 4.0,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.0105
},
"opponent": {
"team": "SF",
"games": 140,
"wins": 58,
"losses": 82,
"win_pct": 0.4143,
"runs_scored": 584.0,
"runs_allowed": 654.0,
"run_differential": -70.0,
"run_differential_per_game": -0.5,
"avg_runs_scored": 4.1714,
"avg_runs_allowed": 4.6714,
"offense_index": 0.927,
"defense_index": 0.9633,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 6.1,
"avg_runs_allowed": 5.1,
"run_differential": 10.0
},
"available": true,
"quality_score": -0.099
},
"edges": {
"quality_edge": 0.1095,
"offense_edge": 0.0889,
"opponent_offense_edge": -0.073,
"defense_strength": -0.0455,
"opponent_defense_weakness": 0.0367,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0059,
"run_prevention": 0.9874,
"strikeout": 1.0091
},
"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": 281.0,
"k_percent": 25.0,
"bb_percent": 9.7,
"woba": 0.286,
"xwoba": 0.291,
"sweet_spot_percent": 30.1,
"barrel_batted_rate": 8.7,
"hard_hit_percent": 34.7,
"avg_best_speed": 78.8009,
"avg_hyper_speed": 93.6949,
"whiff_percent": 29.2,
"swing_percent": 45.6
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.3623,
"command_and_miss": 0.3693,
"regression_edge": -0.1429,
"xwoba_edge": 0.5714,
"barrel_edge": -0.3111,
"hard_hit_edge": 0.4429,
"whiff_edge": 0.5714,
"bb_edge": -0.15,
"pitch_design_score": -0.0055
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669199",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 49,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 49,
"pitch_usage": 0.0,
"release_speed": 89.77040919616555,
"release_spin_rate": 2691.0164138592872,
"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": 49,
"pitch_usage": 0.0,
"release_speed": 89.77040919616555,
"release_spin_rate": 2691.0164138592872,
"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.7704,
"release_spin_rate": 2691.0164,
"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.0055,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0391,
"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.2842,
"sample_weight": 1.0,
"run_prevention_factor": 0.9758,
"strikeout_factor": 1.0406,
"walk_factor": 1.012,
"homer_factor": 0.99,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "669199",
"espn_id": 42592,
"player_name": "Lake Bachar",
"team": "PIT",
"role": "pitcher",
"espn_rank": 195,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 195,
"gp_value": 46.0,
"gp_rank": 119,
"gs_value": 7.0,
"gs_rank": 197,
"qs_value": 0.0,
"qs_rank": 207,
"era_value": 3.7035,
"era_rank": null,
"w_value": 1.0,
"w_rank": 402,
"l_value": 3.0,
"l_rank": 229,
"sv_value": 2.0,
"sv_rank": 88,
"hld_value": 1.0,
"hld_rank": 264,
"ip_value": 75.1,
"ip_rank": 164,
"h_value": 52.0,
"h_rank": 223,
"er_value": 31.0,
"er_rank": 177,
"hr_value": 13.0,
"hr_rank": 113,
"bb_value": 30.0,
"bb_rank": 155,
"k_value": 77.0,
"k_rank": 151,
"k_per_9_value": 9.199116,
"k_per_9_rank": 24,
"whip_value": 1.0884,
"whip_rank": null,
"war_value": 0.85,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9758,
"adjusted": 1
},
"predicted_H": {
"original": 2.0,
"factor": 0.9758,
"adjusted": 2
},
"predicted_BB": {
"original": 2.0,
"factor": 1.012,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.99,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0406,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 1,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 17,
"Pitches": 70,
"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 -8 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260903_SF@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"
}
} |
| 20260903 | 20260903_STL@LAD | away | Quinn Mathews | Quinn Mathews | True | 4.2 | 5.0 | 1 | 3 | 1 | -2 | 6/4 | 1/4 | 3/4 | Last 10 before this game (4 available){
"model_context": {
"embedded_season": {
"ERA": 5.033898305084746,
"WHIP": 1.5762711864406778,
"IP": 19.2,
"games_started": null,
"games_pitched": 4,
"role_avg_IP": 4.917,
"recent_avg_IP": 4.917,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.188,
"sample_weight": 0.45,
"run_prevention_factor": 0.984,
"strikeout_factor": 1.0069,
"walk_factor": 0.9991,
"homer_factor": 0.9328,
"regression_flag": "positive_pitcher_regression",
"k_percent": 22.5,
"bb_percent": 9.0,
"woba": 0.327,
"xwoba": 0.283,
"barrel_percent": 1.7,
"hard_hit_percent": 33.3,
"whiff_percent": 27.3
},
"espn_rank": {
"rank": 512,
"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": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "687273",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 4,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 4,
"totals": {
"IP": 19.2,
"ER": 11.0,
"R": 11.0,
"H": 23.0,
"BB": 8.0,
"SO": 20.0,
"HR": 1.0,
"BF": 89.0,
"Pitches": 393.0
},
"per_game": {
"IP": 5.0,
"ER": 2.75,
"R": 2.75,
"H": 5.75,
"BB": 2.0,
"SO": 5.0,
"HR": 0.25,
"BF": 22.25,
"Pitches": 98.25
},
"rates": {
"ERA": 5.0339,
"WHIP": 1.5763,
"ER_per_IP": 0.55932,
"H_per_IP": 1.16949,
"BB_per_IP": 0.40678,
"SO_per_IP": 1.01695,
"HR_per_IP": 0.05085
}
},
"last_10": {
"games": 4,
"totals": {
"IP": 19.2,
"ER": 11.0,
"R": 11.0,
"H": 23.0,
"BB": 8.0,
"SO": 20.0,
"HR": 1.0,
"BF": 89.0,
"Pitches": 393.0
},
"per_game": {
"IP": 5.0,
"ER": 2.75,
"R": 2.75,
"H": 5.75,
"BB": 2.0,
"SO": 5.0,
"HR": 0.25,
"BF": 22.25,
"Pitches": 98.25
},
"rates": {
"ERA": 5.0339,
"WHIP": 1.5763,
"ER_per_IP": 0.55932,
"H_per_IP": 1.16949,
"BB_per_IP": 0.40678,
"SO_per_IP": 1.01695,
"HR_per_IP": 0.05085
}
},
"season": {
"games": 4,
"totals": {
"IP": 19.2,
"ER": 11.0,
"R": 11.0,
"H": 23.0,
"BB": 8.0,
"SO": 20.0,
"HR": 1.0,
"BF": 89.0,
"Pitches": 393.0
},
"per_game": {
"IP": 5.0,
"ER": 2.75,
"R": 2.75,
"H": 5.75,
"BB": 2.0,
"SO": 5.0,
"HR": 0.25,
"BF": 22.25,
"Pitches": 98.25
},
"rates": {
"ERA": 5.0339,
"WHIP": 1.5763,
"ER_per_IP": 0.55932,
"H_per_IP": 1.16949,
"BB_per_IP": 0.40678,
"SO_per_IP": 1.01695,
"HR_per_IP": 0.05085
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.625,
"predicted_H": 5.302,
"predicted_BB": 1.933,
"predicted_SO": 4.868,
"predicted_HR": 0.52,
"predicted_ERA": 4.7252,
"predicted_WHIP": 1.447
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5847,
"form_weight": 0.4153,
"form_reliability": 0.4444,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.625,
"final": 2.8443,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.302,
"final": 5.7101,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.933,
"final": 1.3874,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.868,
"final": 3.7757,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.52,
"final": 0.2159,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.7252,
"final": 4.7252,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.447,
"final": 1.447,
"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": 19.2,
"ER": 11,
"H": 23,
"BB": 8,
"SO": 20,
"HR": 1,
"ERA": 5.033898305084746,
"WHIP": 1.5762711864406778,
"K9": 9.152542372881355,
"HR9": 0.45762711864406774,
"games_pitched": 4,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 4,
"error_prone": false
},
"games_count": 4,
"latest_game_date": "2026-08-28T00:00:00"
},
"recent_form_boost": 1.0522780611635973,
"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": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
}
},
{
"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": 3,
"predicted_H": 6,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 0
}
}
],
"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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"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": 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.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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 3.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": 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": 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": 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.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": "STL",
"games": 140,
"wins": 70,
"losses": 70,
"win_pct": 0.5,
"runs_scored": 631.0,
"runs_allowed": 639.0,
"run_differential": -8.0,
"run_differential_per_game": -0.0571,
"avg_runs_scored": 4.5071,
"avg_runs_allowed": 4.5643,
"offense_index": 1.0027,
"defense_index": 0.9848,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 7.0,
"run_differential": -17.0
},
"available": true,
"quality_score": -0.042
},
"opponent": {
"team": "LAD",
"games": 139,
"wins": 82,
"losses": 57,
"win_pct": 0.5899,
"runs_scored": 684.0,
"runs_allowed": 538.0,
"run_differential": 146.0,
"run_differential_per_game": 1.0504,
"avg_runs_scored": 4.9209,
"avg_runs_allowed": 3.8705,
"offense_index": 1.0948,
"defense_index": 1.1613,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 3.9,
"run_differential": 0.0
},
"available": true,
"quality_score": 0.1699
},
"edges": {
"quality_edge": -0.2119,
"offense_edge": 0.0027,
"opponent_offense_edge": 0.0948,
"defense_strength": -0.0152,
"opponent_defense_weakness": -0.1613,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9873,
"run_prevention": 1.0273,
"strikeout": 0.9861
},
"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": 41.0,
"k_percent": 22.5,
"bb_percent": 9.0,
"woba": 0.327,
"xwoba": 0.283,
"sweet_spot_percent": 36.7,
"barrel_batted_rate": 1.7,
"hard_hit_percent": 33.3,
"avg_best_speed": 78.2096,
"avg_hyper_speed": 93.315,
"whiff_percent": 27.3,
"swing_percent": 46.6
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.4683,
"command_and_miss": 0.1486,
"regression_edge": 1.2571,
"xwoba_edge": 0.8,
"barrel_edge": 1.2444,
"hard_hit_edge": 0.6429,
"whiff_edge": 0.3,
"bb_edge": 0.025,
"pitch_design_score": -0.1103
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687273",
"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.8989365165491,
"release_spin_rate": 2078.2117200217035,
"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.8989365165491,
"release_spin_rate": 2078.2117200217035,
"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.8989,
"release_spin_rate": 2078.2117,
"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.1103,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.7877,
"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.188,
"sample_weight": 0.45,
"run_prevention_factor": 0.984,
"strikeout_factor": 1.0069,
"walk_factor": 0.9991,
"homer_factor": 0.9328,
"woba_minus_xwoba": 0.044,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "687273",
"espn_id": 4837405,
"player_name": "Quinn Mathews",
"team": "STL",
"role": "pitcher",
"espn_rank": 512,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 512,
"gp_value": 4.0,
"gp_rank": 653,
"gs_value": 4.0,
"gs_rank": 230,
"qs_value": 0.0,
"qs_rank": 207,
"era_value": 5.0338,
"era_rank": null,
"w_value": 1.0,
"w_rank": 402,
"l_value": 2.0,
"l_rank": 318,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 19.2,
"ip_rank": 508,
"h_value": 23.0,
"h_rank": 470,
"er_value": 11.0,
"er_rank": 489,
"hr_value": 1.0,
"hr_rank": 602,
"bb_value": 8.0,
"bb_rank": 516,
"k_value": 20.0,
"k_rank": 476,
"k_per_9_value": 9.152542,
"k_per_9_rank": 25,
"whip_value": 1.5762,
"whip_rank": null,
"war_value": -0.01,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9928,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.9928,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9996,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9698,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0031,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 3,
"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 4 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."
}
],
"provenance": {
"prediction": "output/games/20260903_STL@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"
}
} |
| 20260903 | 20260903_STL@LAD | home | Tarik Skubal | Tarik Skubal | True | 6.0 | 5.2 | -1 | 0 | 2 | 2 | 3/10 | 0/1 | 7/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.8421052631578947,
"WHIP": 0.9394736842105262,
"IP": 126.2,
"games_started": null,
"games_pitched": 21,
"role_avg_IP": 6.032,
"recent_avg_IP": 6.0,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.7539,
"sample_weight": 1.0,
"run_prevention_factor": 0.9359,
"strikeout_factor": 1.0897,
"walk_factor": 0.902,
"homer_factor": 0.9579,
"regression_flag": "neutral",
"k_percent": 30.9,
"bb_percent": 4.2,
"woba": 0.264,
"xwoba": 0.267,
"barrel_percent": 7.6,
"hard_hit_percent": 36.1,
"whiff_percent": 31.9
},
"espn_rank": {
"rank": 19,
"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": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669373",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 21,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 10.0,
"R": 11.0,
"H": 24.0,
"BB": 7.0,
"SO": 37.0,
"HR": 2.0,
"BF": 121.0,
"Pitches": 478.0
},
"per_game": {
"IP": 6.0,
"ER": 2.0,
"R": 2.2,
"H": 4.8,
"BB": 1.4,
"SO": 7.4,
"HR": 0.4,
"BF": 24.2,
"Pitches": 95.6
},
"rates": {
"ERA": 3.0,
"WHIP": 1.0333,
"ER_per_IP": 0.33333,
"H_per_IP": 0.8,
"BB_per_IP": 0.23333,
"SO_per_IP": 1.23333,
"HR_per_IP": 0.06667
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.0,
"ER": 17.0,
"R": 18.0,
"H": 46.0,
"BB": 13.0,
"SO": 78.0,
"HR": 3.0,
"BF": 241.0,
"Pitches": 937.0
},
"per_game": {
"IP": 6.0,
"ER": 1.7,
"R": 1.8,
"H": 4.6,
"BB": 1.3,
"SO": 7.8,
"HR": 0.3,
"BF": 24.1,
"Pitches": 93.7
},
"rates": {
"ERA": 2.5082,
"WHIP": 0.9672,
"ER_per_IP": 0.27869,
"H_per_IP": 0.7541,
"BB_per_IP": 0.21311,
"SO_per_IP": 1.27869,
"HR_per_IP": 0.04918
}
},
"season": {
"games": 21,
"totals": {
"IP": 126.2,
"ER": 40.0,
"R": 44.0,
"H": 98.0,
"BB": 21.0,
"SO": 153.0,
"HR": 12.0,
"BF": 495.0,
"Pitches": 1909.0
},
"per_game": {
"IP": 6.0,
"ER": 1.9048,
"R": 2.0952,
"H": 4.6667,
"BB": 1.0,
"SO": 7.2857,
"HR": 0.5714,
"BF": 23.5714,
"Pitches": 90.9048
},
"rates": {
"ERA": 2.8421,
"WHIP": 0.9395,
"ER_per_IP": 0.31579,
"H_per_IP": 0.77368,
"BB_per_IP": 0.16579,
"SO_per_IP": 1.20789,
"HR_per_IP": 0.09474
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.08,
"predicted_H": 4.896,
"predicted_BB": 1.459,
"predicted_SO": 7.113,
"predicted_HR": 0.49,
"predicted_ERA": 3.1197,
"predicted_WHIP": 1.0591
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4312,
"form_weight": 0.5688,
"form_reliability": 0.8077,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 0.0,
"form": 2.08,
"final": 1.183,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.896,
"final": 4.0784,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.459,
"final": 0.8298,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 7.113,
"final": 6.633,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.49,
"final": 0.2787,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.1197,
"final": 3.1197,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0591,
"final": 1.0591,
"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": 17,
"H": 46,
"BB": 13,
"SO": 78,
"HR": 3,
"ERA": 2.5081967213114753,
"WHIP": 0.9672131147540983,
"K9": 11.508196721311476,
"HR9": 0.4426229508196721,
"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-08-28T00:00:00"
},
"recent_form_boost": 0.7819477951383921,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 0.0,
"predicted_H": 3.0,
"predicted_BB": 0.0,
"predicted_SO": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
}
},
{
"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": 0,
"predicted_H": 3,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669373",
"player_name": "Tarik Skubal",
"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": 0.0,
"predicted_ER": 0.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.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": "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": 0.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"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": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"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": 0.0,
"predicted_ER": 0.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 0.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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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.0,
"after": 6.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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"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": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAD",
"games": 139,
"wins": 82,
"losses": 57,
"win_pct": 0.5899,
"runs_scored": 684.0,
"runs_allowed": 538.0,
"run_differential": 146.0,
"run_differential_per_game": 1.0504,
"avg_runs_scored": 4.9209,
"avg_runs_allowed": 3.8705,
"offense_index": 1.0948,
"defense_index": 1.1613,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 3.9,
"run_differential": 0.0
},
"available": true,
"quality_score": 0.1699
},
"opponent": {
"team": "STL",
"games": 140,
"wins": 70,
"losses": 70,
"win_pct": 0.5,
"runs_scored": 631.0,
"runs_allowed": 639.0,
"run_differential": -8.0,
"run_differential_per_game": -0.0571,
"avg_runs_scored": 4.5071,
"avg_runs_allowed": 4.5643,
"offense_index": 1.0027,
"defense_index": 0.9848,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 7.0,
"run_differential": -17.0
},
"available": true,
"quality_score": -0.042
},
"edges": {
"quality_edge": 0.2119,
"offense_edge": 0.0948,
"opponent_offense_edge": 0.0027,
"defense_strength": 0.1613,
"opponent_defense_weakness": 0.0152,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0132,
"run_prevention": 0.9737,
"strikeout": 1.0061
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669373",
"profile": {
"available": true,
"pitcher_id": "669373",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 444.0,
"k_percent": 30.9,
"bb_percent": 4.2,
"woba": 0.264,
"xwoba": 0.267,
"sweet_spot_percent": 33.5,
"barrel_batted_rate": 7.6,
"hard_hit_percent": 36.1,
"avg_best_speed": 75.2343,
"avg_hyper_speed": 93.5847,
"whiff_percent": 31.9,
"swing_percent": 53.6
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.802,
"command_and_miss": 1.1586,
"regression_edge": -0.0857,
"xwoba_edge": 1.2571,
"barrel_edge": -0.0667,
"hard_hit_edge": 0.2429,
"whiff_edge": 0.9571,
"bb_edge": 1.225,
"pitch_design_score": 0.1516
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669373",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 95,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 95,
"pitch_usage": 0.0,
"release_speed": 92.57479172715446,
"release_spin_rate": 2164.2997542296353,
"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": 95,
"pitch_usage": 0.0,
"release_speed": 92.57479172715446,
"release_spin_rate": 2164.2997542296353,
"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.5748,
"release_spin_rate": 2164.2998,
"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.1516,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.0827,
"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.7539,
"sample_weight": 1.0,
"run_prevention_factor": 0.9359,
"strikeout_factor": 1.0897,
"walk_factor": 0.902,
"homer_factor": 0.9579,
"woba_minus_xwoba": -0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "669373",
"espn_id": 42409,
"player_name": "Tarik Skubal",
"team": "LAD",
"role": "pitcher",
"espn_rank": 19,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 19,
"gp_value": 21.0,
"gp_rank": 363,
"gs_value": 21.0,
"gs_rank": 89,
"qs_value": 13.0,
"qs_rank": 24,
"era_value": 2.8421,
"era_rank": null,
"w_value": 8.0,
"w_rank": 58,
"l_value": 7.0,
"l_rank": 79,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 126.2,
"ip_rank": 79,
"h_value": 98.0,
"h_rank": 112,
"er_value": 40.0,
"er_rank": 141,
"hr_value": 12.0,
"hr_rank": 126,
"bb_value": 21.0,
"bb_rank": 261,
"k_value": 153.0,
"k_rank": 24,
"k_per_9_value": 10.871053,
"k_per_9_rank": 8,
"whip_value": 0.9394,
"whip_rank": null,
"war_value": 3.47,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9359,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9359,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.902,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9579,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0897,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 3,
"predicted_R": 0,
"predicted_ER": 0,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 97,
"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 7",
"detail": "Actual minus predicted hits was +7."
},
{
"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/20260903_STL@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"
}
} |
| 20260903 | 20260903_TB@TEX | away | Shane McClanahan | Shane McClanahan | True | 5.1 | 5.0 | -1 | 2 | 4 | 2 | 3/6 | 1/1 | 5/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.185840707964602,
"WHIP": 1.1061946902654867,
"IP": 113.0,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 4.913,
"recent_avg_IP": 4.4,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0406,
"sample_weight": 1.0,
"run_prevention_factor": 1.0034,
"strikeout_factor": 1.0131,
"walk_factor": 0.982,
"homer_factor": 1.0478,
"regression_flag": "negative_pitcher_regression",
"k_percent": 22.1,
"bb_percent": 8.2,
"woba": 0.268,
"xwoba": 0.315,
"barrel_percent": 8.8,
"hard_hit_percent": 40.9,
"whiff_percent": 27.3
},
"espn_rank": {
"rank": 103,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 113.0,
"season_ERA": 3.186,
"season_WHIP": 1.106,
"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": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663556",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.0,
"ER": 8.0,
"R": 9.0,
"H": 13.0,
"BB": 7.0,
"SO": 18.0,
"HR": 2.0,
"BF": 88.0,
"Pitches": 331.0
},
"per_game": {
"IP": 4.1,
"ER": 1.6,
"R": 1.8,
"H": 2.6,
"BB": 1.4,
"SO": 3.6,
"HR": 0.4,
"BF": 17.6,
"Pitches": 66.2
},
"rates": {
"ERA": 3.2727,
"WHIP": 0.9091,
"ER_per_IP": 0.36364,
"H_per_IP": 0.59091,
"BB_per_IP": 0.31818,
"SO_per_IP": 0.81818,
"HR_per_IP": 0.09091
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.0,
"ER": 17.0,
"R": 23.0,
"H": 34.0,
"BB": 16.0,
"SO": 37.0,
"HR": 6.0,
"BF": 198.0,
"Pitches": 730.0
},
"per_game": {
"IP": 5.0,
"ER": 1.7,
"R": 2.3,
"H": 3.4,
"BB": 1.6,
"SO": 3.7,
"HR": 0.6,
"BF": 19.8,
"Pitches": 73.0
},
"rates": {
"ERA": 3.1224,
"WHIP": 1.0204,
"ER_per_IP": 0.34694,
"H_per_IP": 0.69388,
"BB_per_IP": 0.32653,
"SO_per_IP": 0.7551,
"HR_per_IP": 0.12245
}
},
"season": {
"games": 23,
"totals": {
"IP": 113.0,
"ER": 40.0,
"R": 48.0,
"H": 87.0,
"BB": 38.0,
"SO": 103.0,
"HR": 9.0,
"BF": 466.0,
"Pitches": 1758.0
},
"per_game": {
"IP": 5.0,
"ER": 1.7391,
"R": 2.087,
"H": 3.7826,
"BB": 1.6522,
"SO": 4.4783,
"HR": 0.3913,
"BF": 20.2609,
"Pitches": 76.4348
},
"rates": {
"ERA": 3.1858,
"WHIP": 1.1062,
"ER_per_IP": 0.35398,
"H_per_IP": 0.76991,
"BB_per_IP": 0.33628,
"SO_per_IP": 0.9115,
"HR_per_IP": 0.07965
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 1.857,
"predicted_H": 3.499,
"predicted_BB": 1.622,
"predicted_SO": 4.078,
"predicted_HR": 0.527,
"predicted_ERA": 3.4305,
"predicted_WHIP": 1.0511
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4255,
"form_weight": 0.5745,
"form_reliability": 0.8214,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.0,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.857,
"final": 1.9178,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 3.499,
"final": 3.2867,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.622,
"final": 1.3574,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.078,
"final": 4.4703,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.527,
"final": 0.3028,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.4305,
"final": 3.4305,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0511,
"final": 1.0511,
"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": 17,
"H": 34,
"BB": 16,
"SO": 37,
"HR": 6,
"ERA": 3.1224489795918373,
"WHIP": 1.0204081632653064,
"K9": 6.79591836734694,
"HR9": 1.1020408163265307,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-28T00:00:00"
},
"recent_form_boost": 0.852381050407713,
"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": 3.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
}
},
{
"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": 2,
"predicted_H": 3,
"predicted_BB": 1,
"predicted_SO": 5,
"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.1,
"predicted_ER": 2,
"predicted_H": 3,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663556",
"player_name": "Shane McClanahan",
"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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.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": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"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": 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": 5.6667,
"after": 5.1,
"delta": -0.5667,
"percent_delta": -0.1,
"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.1,
"delta": -0.5667,
"percent_delta": -0.1,
"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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"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": 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": 5.1,
"after": 5.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": {}
},
{
"index": 4,
"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": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_R": 2.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": 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": 5.1,
"after": 5.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": 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": 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": 5.6667,
"after": 5.1,
"delta": -0.5667,
"percent_delta": -0.1,
"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.1,
"delta": -0.5667,
"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": "TB",
"games": 139,
"wins": 83,
"losses": 56,
"win_pct": 0.5971,
"runs_scored": 628.0,
"runs_allowed": 577.0,
"run_differential": 51.0,
"run_differential_per_game": 0.3669,
"avg_runs_scored": 4.518,
"avg_runs_allowed": 4.1511,
"offense_index": 1.006,
"defense_index": 1.0819,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 3.5,
"run_differential": 9.0
},
"available": true,
"quality_score": 0.1975
},
"opponent": {
"team": "TEX",
"games": 140,
"wins": 69,
"losses": 71,
"win_pct": 0.4929,
"runs_scored": 572.0,
"runs_allowed": 620.0,
"run_differential": -48.0,
"run_differential_per_game": -0.3429,
"avg_runs_scored": 4.0857,
"avg_runs_allowed": 4.4286,
"offense_index": 0.9097,
"defense_index": 1.0141,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 5.6,
"run_differential": 0.0
},
"available": true,
"quality_score": -0.048
},
"edges": {
"quality_edge": 0.2455,
"offense_edge": 0.006,
"opponent_offense_edge": -0.0903,
"defense_strength": 0.0819,
"opponent_defense_weakness": -0.0141,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0159,
"run_prevention": 0.9651,
"strikeout": 1.0146
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663556",
"profile": {
"available": true,
"pitcher_id": "663556",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 421.0,
"k_percent": 22.1,
"bb_percent": 8.2,
"woba": 0.268,
"xwoba": 0.315,
"sweet_spot_percent": 32.2,
"barrel_batted_rate": 8.8,
"hard_hit_percent": 40.9,
"avg_best_speed": 77.8008,
"avg_hyper_speed": 94.4896,
"whiff_percent": 27.3,
"swing_percent": 48.5
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.0933,
"command_and_miss": 0.1629,
"regression_edge": -1.3429,
"xwoba_edge": -0.1143,
"barrel_edge": -0.3333,
"hard_hit_edge": -0.4429,
"whiff_edge": 0.3,
"bb_edge": 0.225,
"pitch_design_score": -0.0106
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663556",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 66,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 66,
"pitch_usage": 0.0,
"release_speed": 89.67791963059732,
"release_spin_rate": 2098.2361334703396,
"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": 66,
"pitch_usage": 0.0,
"release_speed": 89.67791963059732,
"release_spin_rate": 2098.2361334703396,
"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.6779,
"release_spin_rate": 2098.2361,
"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.0106,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0761,
"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.0406,
"sample_weight": 1.0,
"run_prevention_factor": 1.0034,
"strikeout_factor": 1.0131,
"walk_factor": 0.982,
"homer_factor": 1.0478,
"woba_minus_xwoba": -0.047,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "663556",
"espn_id": 41199,
"player_name": "Shane McClanahan",
"team": "TB",
"role": "pitcher",
"espn_rank": 103,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 103,
"gp_value": 23.0,
"gp_rank": 336,
"gs_value": 23.0,
"gs_rank": 72,
"qs_value": 4.0,
"qs_rank": 121,
"era_value": 3.1858,
"era_rank": null,
"w_value": 10.0,
"w_rank": 26,
"l_value": 6.0,
"l_rank": 105,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 113.0,
"ip_rank": 97,
"h_value": 87.0,
"h_rank": 126,
"er_value": 40.0,
"er_rank": 141,
"hr_value": 9.0,
"hr_rank": 171,
"bb_value": 38.0,
"bb_rank": 89,
"k_value": 103.0,
"k_rank": 88,
"k_per_9_value": 8.20354,
"k_per_9_rank": 24,
"whip_value": 1.1061,
"whip_rank": null,
"war_value": 1.63,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0034,
"adjusted": 2
},
"predicted_H": {
"original": 3.0,
"factor": 1.0034,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 0.982,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0478,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0131,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 20,
"Pitches": 82,
"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/20260903_TB@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"
}
} |
| 20260903 | 20260903_TB@TEX | home | Cal Quantrill | Cal Quantrill | True | 5.2 | 7.0 | 4 | 3 | 0 | -3 | 3/2 | 1/2 | 4/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.011152416356877,
"WHIP": 1.104089219330855,
"IP": 89.2,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.121,
"recent_avg_IP": 6.0,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0691,
"sample_weight": 1.0,
"run_prevention_factor": 1.0059,
"strikeout_factor": 0.9497,
"walk_factor": 0.938,
"homer_factor": 0.9934,
"regression_flag": "neutral",
"k_percent": 18.5,
"bb_percent": 6.0,
"woba": 0.285,
"xwoba": 0.309,
"barrel_percent": 7.7,
"hard_hit_percent": 35.7,
"whiff_percent": 19.8
},
"espn_rank": {
"rank": 134,
"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": 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": "615698",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 4.0,
"R": 4.0,
"H": 18.0,
"BB": 3.0,
"SO": 25.0,
"HR": 2.0,
"BF": 95.0,
"Pitches": 370.0
},
"per_game": {
"IP": 5.0,
"ER": 0.8,
"R": 0.8,
"H": 3.6,
"BB": 0.6,
"SO": 5.0,
"HR": 0.4,
"BF": 19.0,
"Pitches": 74.0
},
"rates": {
"ERA": 1.44,
"WHIP": 0.84,
"ER_per_IP": 0.16,
"H_per_IP": 0.72,
"BB_per_IP": 0.12,
"SO_per_IP": 1.0,
"HR_per_IP": 0.08
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.1,
"ER": 15.0,
"R": 17.0,
"H": 42.0,
"BB": 10.0,
"SO": 41.0,
"HR": 6.0,
"BF": 198.0,
"Pitches": 746.0
},
"per_game": {
"IP": 5.0,
"ER": 1.5,
"R": 1.7,
"H": 4.2,
"BB": 1.0,
"SO": 4.1,
"HR": 0.6,
"BF": 19.8,
"Pitches": 74.6
},
"rates": {
"ERA": 2.7365,
"WHIP": 1.0541,
"ER_per_IP": 0.30405,
"H_per_IP": 0.85135,
"BB_per_IP": 0.2027,
"SO_per_IP": 0.83108,
"HR_per_IP": 0.12162
}
},
"season": {
"games": 28,
"totals": {
"IP": 89.2,
"ER": 30.0,
"R": 36.0,
"H": 77.0,
"BB": 22.0,
"SO": 68.0,
"HR": 11.0,
"BF": 368.0,
"Pitches": 1399.0
},
"per_game": {
"IP": 3.1,
"ER": 1.0714,
"R": 1.2857,
"H": 2.75,
"BB": 0.7857,
"SO": 2.4286,
"HR": 0.3929,
"BF": 13.1429,
"Pitches": 49.9643
},
"rates": {
"ERA": 3.0112,
"WHIP": 1.1041,
"ER_per_IP": 0.33457,
"H_per_IP": 0.85874,
"BB_per_IP": 0.24535,
"SO_per_IP": 0.75836,
"HR_per_IP": 0.12268
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 1.366,
"predicted_H": 3.955,
"predicted_BB": 0.982,
"predicted_SO": 4.334,
"predicted_HR": 0.529,
"predicted_ERA": 2.552,
"predicted_WHIP": 1.0247
}
},
"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": 5.2,
"form": 4.2,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.366,
"final": 2.0425,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 3.955,
"final": 3.5596,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 0.982,
"final": 0.9895,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.334,
"final": 3.3677,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.529,
"final": 0.724,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.552,
"final": 2.552,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0247,
"final": 1.0247,
"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.1,
"ER": 15,
"H": 42,
"BB": 10,
"SO": 41,
"HR": 6,
"ERA": 2.736486486486487,
"WHIP": 1.0540540540540542,
"K9": 7.479729729729731,
"HR9": 1.0945945945945947,
"games_pitched": 10,
"quality_starts": 5,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-29T00:00:00"
},
"recent_form_boost": 0.8098014172030797,
"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": 3.0,
"predicted_BB": 1.0,
"predicted_SO": 2.0,
"predicted_HR": 1.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": 5.2,
"predicted_ER": 3,
"predicted_H": 3,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "615698",
"player_name": "Cal Quantrill",
"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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 4.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": 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.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"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": 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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 4.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": 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.2,
"after": 5.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": 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": 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.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"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": 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": "TEX",
"games": 140,
"wins": 69,
"losses": 71,
"win_pct": 0.4929,
"runs_scored": 572.0,
"runs_allowed": 620.0,
"run_differential": -48.0,
"run_differential_per_game": -0.3429,
"avg_runs_scored": 4.0857,
"avg_runs_allowed": 4.4286,
"offense_index": 0.9097,
"defense_index": 1.0141,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 5.6,
"run_differential": 0.0
},
"available": true,
"quality_score": -0.048
},
"opponent": {
"team": "TB",
"games": 139,
"wins": 83,
"losses": 56,
"win_pct": 0.5971,
"runs_scored": 628.0,
"runs_allowed": 577.0,
"run_differential": 51.0,
"run_differential_per_game": 0.3669,
"avg_runs_scored": 4.518,
"avg_runs_allowed": 4.1511,
"offense_index": 1.006,
"defense_index": 1.0819,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 3.5,
"run_differential": 9.0
},
"available": true,
"quality_score": 0.1975
},
"edges": {
"quality_edge": -0.2455,
"offense_edge": -0.0903,
"opponent_offense_edge": 0.006,
"defense_strength": 0.0141,
"opponent_defense_weakness": -0.0819,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9904,
"run_prevention": 1.0118,
"strikeout": 0.9922
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "615698",
"profile": {
"available": true,
"pitcher_id": "615698",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 310.0,
"k_percent": 18.5,
"bb_percent": 6.0,
"woba": 0.285,
"xwoba": 0.309,
"sweet_spot_percent": 33.1,
"barrel_batted_rate": 7.7,
"hard_hit_percent": 35.7,
"avg_best_speed": 78.5319,
"avg_hyper_speed": 93.6952,
"whiff_percent": 19.8,
"swing_percent": 48.4
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.1541,
"command_and_miss": -0.3336,
"regression_edge": -0.6857,
"xwoba_edge": 0.0571,
"barrel_edge": -0.0889,
"hard_hit_edge": 0.3,
"whiff_edge": -0.7714,
"bb_edge": 0.775,
"pitch_design_score": -0.0014
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "615698",
"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": 89.84263114012379,
"release_spin_rate": 1952.7640647104026,
"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": 89.84263114012379,
"release_spin_rate": 1952.7640647104026,
"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.8426,
"release_spin_rate": 1952.7641,
"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.0014,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0102,
"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.0691,
"sample_weight": 1.0,
"run_prevention_factor": 1.0059,
"strikeout_factor": 0.9497,
"walk_factor": 0.938,
"homer_factor": 0.9934,
"woba_minus_xwoba": -0.024,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "615698",
"espn_id": 39875,
"player_name": "Cal Quantrill",
"team": "TEX",
"role": "pitcher",
"espn_rank": 134,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 134,
"gp_value": 28.0,
"gp_rank": 229,
"gs_value": 11.0,
"gs_rank": 160,
"qs_value": 5.0,
"qs_rank": 108,
"era_value": 3.0111,
"era_rank": null,
"w_value": 6.0,
"w_rank": 100,
"l_value": 5.0,
"l_rank": 130,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 89.2,
"ip_rank": 138,
"h_value": 77.0,
"h_rank": 151,
"er_value": 30.0,
"er_rank": 182,
"hr_value": 11.0,
"hr_rank": 140,
"bb_value": 22.0,
"bb_rank": 244,
"k_value": 68.0,
"k_rank": 175,
"k_per_9_value": 6.8252788,
"k_per_9_rank": 34,
"whip_value": 1.104,
"whip_rank": null,
"war_value": 1.3,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 1.0059,
"adjusted": 1
},
"predicted_H": {
"original": 4.0,
"factor": 1.0059,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.938,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9934,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9497,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"Pitches": 84,
"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/20260903_TB@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"
}
} |
| 20260903 | 20260903_TOR@CLE | away | José Soriano | José Soriano | True | 6.0 | 4.2 | -4 | 0 | 3 | 3 | 3/6 | 2/3 | 10/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.449339207048458,
"WHIP": 1.275330396475771,
"IP": 151.1,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.605,
"recent_avg_IP": 5.667,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0398,
"sample_weight": 1.0,
"run_prevention_factor": 1.0034,
"strikeout_factor": 1.0383,
"walk_factor": 1.03,
"homer_factor": 1.0295,
"regression_flag": "negative_pitcher_regression",
"k_percent": 23.7,
"bb_percent": 10.6,
"woba": 0.294,
"xwoba": 0.325,
"barrel_percent": 7.9,
"hard_hit_percent": 39.0,
"whiff_percent": 30.1
},
"espn_rank": {
"rank": 32,
"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": "667755",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.1,
"ER": 13.0,
"R": 14.0,
"H": 29.0,
"BB": 10.0,
"SO": 22.0,
"HR": 2.0,
"BF": 119.0,
"Pitches": 469.0
},
"per_game": {
"IP": 5.2,
"ER": 2.6,
"R": 2.8,
"H": 5.8,
"BB": 2.0,
"SO": 4.4,
"HR": 0.4,
"BF": 23.8,
"Pitches": 93.8
},
"rates": {
"ERA": 4.1294,
"WHIP": 1.3765,
"ER_per_IP": 0.45882,
"H_per_IP": 1.02353,
"BB_per_IP": 0.35294,
"SO_per_IP": 0.77647,
"HR_per_IP": 0.07059
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 56.1,
"ER": 23.0,
"R": 25.0,
"H": 49.0,
"BB": 19.0,
"SO": 47.0,
"HR": 2.0,
"BF": 229.0,
"Pitches": 910.0
},
"per_game": {
"IP": 5.2,
"ER": 2.3,
"R": 2.5,
"H": 4.9,
"BB": 1.9,
"SO": 4.7,
"HR": 0.2,
"BF": 22.9,
"Pitches": 91.0
},
"rates": {
"ERA": 3.6746,
"WHIP": 1.2071,
"ER_per_IP": 0.40828,
"H_per_IP": 0.86982,
"BB_per_IP": 0.33728,
"SO_per_IP": 0.83432,
"HR_per_IP": 0.0355
}
},
"season": {
"games": 27,
"totals": {
"IP": 151.1,
"ER": 58.0,
"R": 63.0,
"H": 126.0,
"BB": 67.0,
"SO": 149.0,
"HR": 14.0,
"BF": 630.0,
"Pitches": 2511.0
},
"per_game": {
"IP": 5.2,
"ER": 2.1481,
"R": 2.3333,
"H": 4.6667,
"BB": 2.4815,
"SO": 5.5185,
"HR": 0.5185,
"BF": 23.3333,
"Pitches": 93.0
},
"rates": {
"ERA": 3.4493,
"WHIP": 1.2753,
"ER_per_IP": 0.38326,
"H_per_IP": 0.8326,
"BB_per_IP": 0.44273,
"SO_per_IP": 0.98458,
"HR_per_IP": 0.09251
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.5,
"predicted_H": 5.364,
"predicted_BB": 2.094,
"predicted_SO": 4.884,
"predicted_HR": 0.433,
"predicted_ERA": 3.9348,
"predicted_WHIP": 1.3043
}
},
"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": 6.0,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 0.0,
"form": 2.5,
"final": 1.46,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.364,
"final": 4.3806,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.094,
"final": 2.0549,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 4.884,
"final": 6.1802,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.433,
"final": 0.2529,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.9348,
"final": 3.9348,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3043,
"final": 1.3043,
"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": 56.1,
"ER": 23,
"H": 49,
"BB": 19,
"SO": 47,
"HR": 2,
"ERA": 3.6745562130177514,
"WHIP": 1.2071005917159763,
"K9": 7.50887573964497,
"HR9": 0.3195266272189349,
"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-08-29T00:00:00"
},
"recent_form_boost": 0.9191604248793951,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 0.0,
"predicted_H": 3.0,
"predicted_BB": 2.0,
"predicted_SO": 8.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": "667755",
"player_name": "Jos\u00e9 Soriano",
"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": 2.0,
"predicted_ER": 0.0,
"predicted_H": 3.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 0.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 0.0,
"predicted_SO": 10.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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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.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": 10.0,
"delta": 2.0,
"percent_delta": 0.25,
"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": 8.0,
"after": 10.0,
"delta": 2.0,
"percent_delta": 0.25,
"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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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.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": 10.0,
"delta": 2.0,
"percent_delta": 0.25,
"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": 8.0,
"after": 10.0,
"delta": 2.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TOR",
"games": 140,
"wins": 69,
"losses": 71,
"win_pct": 0.4929,
"runs_scored": 560.0,
"runs_allowed": 604.0,
"run_differential": -44.0,
"run_differential_per_game": -0.3143,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.3143,
"offense_index": 0.8893,
"defense_index": 1.0426,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 3.9,
"run_differential": 7.0
},
"available": true,
"quality_score": -0.0095
},
"opponent": {
"team": "CLE",
"games": 139,
"wins": 70,
"losses": 69,
"win_pct": 0.5036,
"runs_scored": 563.0,
"runs_allowed": 571.0,
"run_differential": -8.0,
"run_differential_per_game": -0.0576,
"avg_runs_scored": 4.0504,
"avg_runs_allowed": 4.1079,
"offense_index": 0.9005,
"defense_index": 1.0949,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.0,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.066
},
"edges": {
"quality_edge": -0.0755,
"offense_edge": -0.1107,
"opponent_offense_edge": -0.0995,
"defense_strength": 0.0426,
"opponent_defense_weakness": -0.0949,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0022,
"run_prevention": 0.9836,
"strikeout": 1.0057
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "667755",
"profile": {
"available": true,
"pitcher_id": "667755",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 572.0,
"k_percent": 23.7,
"bb_percent": 10.6,
"woba": 0.294,
"xwoba": 0.325,
"sweet_spot_percent": 30.9,
"barrel_batted_rate": 7.9,
"hard_hit_percent": 39.0,
"avg_best_speed": 77.7583,
"avg_hyper_speed": 94.244,
"whiff_percent": 30.1,
"swing_percent": 46.6
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.0676,
"command_and_miss": 0.2857,
"regression_edge": -0.8857,
"xwoba_edge": -0.4,
"barrel_edge": -0.1333,
"hard_hit_edge": -0.1714,
"whiff_edge": 0.7,
"bb_edge": -0.375,
"pitch_design_score": 0.1542
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "667755",
"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": 92.62248350722385,
"release_spin_rate": 2056.682557815389,
"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": 92.62248350722385,
"release_spin_rate": 2056.682557815389,
"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.6225,
"release_spin_rate": 2056.6826,
"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.1542,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1018,
"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.0398,
"sample_weight": 1.0,
"run_prevention_factor": 1.0034,
"strikeout_factor": 1.0383,
"walk_factor": 1.03,
"homer_factor": 1.0295,
"woba_minus_xwoba": -0.031,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "667755",
"espn_id": 40973,
"player_name": "Jose Soriano",
"team": "TOR",
"role": "pitcher",
"espn_rank": 32,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 32,
"gp_value": 27.0,
"gp_rank": 251,
"gs_value": 27.0,
"gs_rank": 19,
"qs_value": 10.0,
"qs_rank": 54,
"era_value": 3.4493,
"era_rank": 24.0,
"w_value": 11.0,
"w_rank": 20,
"l_value": 7.0,
"l_rank": 79,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 151.1,
"ip_rank": 29,
"h_value": 126.0,
"h_rank": 59,
"er_value": 58.0,
"er_rank": 63,
"hr_value": 14.0,
"hr_rank": 101,
"bb_value": 67.0,
"bb_rank": 6,
"k_value": 149.0,
"k_rank": 26,
"k_per_9_value": 8.861233,
"k_per_9_rank": 24,
"whip_value": 1.2753,
"whip_rank": 36.0,
"war_value": 3.05,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0034,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0034,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.03,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0295,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0383,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 3,
"predicted_R": 0,
"predicted_ER": 0,
"predicted_BB": 2,
"predicted_SO": 10,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 105,
"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: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260903_TOR@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"
}
} |
| 20260903 | 20260903_TOR@CLE | home | Tanner Bibee | Tanner Bibee | True | 6.0 | 4.0 | -6 | 3 | 5 | 2 | 7/4 | 1/5 | 9/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.8809034907597533,
"WHIP": 1.1581108829568787,
"IP": 162.1,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.798,
"recent_avg_IP": 6.0,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1648,
"sample_weight": 1.0,
"run_prevention_factor": 1.014,
"strikeout_factor": 0.9771,
"walk_factor": 0.956,
"homer_factor": 1.0331,
"regression_flag": "neutral",
"k_percent": 19.3,
"bb_percent": 6.9,
"woba": 0.305,
"xwoba": 0.319,
"barrel_percent": 8.1,
"hard_hit_percent": 39.9,
"whiff_percent": 23.8
},
"espn_rank": {
"rank": 60,
"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": 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": "676440",
"report_date": "20260903",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 14.0,
"R": 16.0,
"H": 28.0,
"BB": 8.0,
"SO": 28.0,
"HR": 6.0,
"BF": 127.0,
"Pitches": 479.0
},
"per_game": {
"IP": 6.0,
"ER": 2.8,
"R": 3.2,
"H": 5.6,
"BB": 1.6,
"SO": 5.6,
"HR": 1.2,
"BF": 25.4,
"Pitches": 95.8
},
"rates": {
"ERA": 4.2,
"WHIP": 1.2,
"ER_per_IP": 0.46667,
"H_per_IP": 0.93333,
"BB_per_IP": 0.26667,
"SO_per_IP": 0.93333,
"HR_per_IP": 0.2
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.0,
"ER": 28.0,
"R": 30.0,
"H": 57.0,
"BB": 17.0,
"SO": 45.0,
"HR": 9.0,
"BF": 253.0,
"Pitches": 937.0
},
"per_game": {
"IP": 6.0,
"ER": 2.8,
"R": 3.0,
"H": 5.7,
"BB": 1.7,
"SO": 4.5,
"HR": 0.9,
"BF": 25.3,
"Pitches": 93.7
},
"rates": {
"ERA": 4.2,
"WHIP": 1.2333,
"ER_per_IP": 0.46667,
"H_per_IP": 0.95,
"BB_per_IP": 0.28333,
"SO_per_IP": 0.75,
"HR_per_IP": 0.15
}
},
"season": {
"games": 28,
"totals": {
"IP": 162.1,
"ER": 70.0,
"R": 74.0,
"H": 142.0,
"BB": 46.0,
"SO": 128.0,
"HR": 26.0,
"BF": 664.0,
"Pitches": 2532.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5,
"R": 2.6429,
"H": 5.0714,
"BB": 1.6429,
"SO": 4.5714,
"HR": 0.9286,
"BF": 23.7143,
"Pitches": 90.4286
},
"rates": {
"ERA": 3.8809,
"WHIP": 1.1581,
"ER_per_IP": 0.43121,
"H_per_IP": 0.87474,
"BB_per_IP": 0.28337,
"SO_per_IP": 0.7885,
"HR_per_IP": 0.16016
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.766,
"predicted_H": 5.553,
"predicted_BB": 1.725,
"predicted_SO": 5.083,
"predicted_HR": 1.012,
"predicted_ERA": 4.188,
"predicted_WHIP": 1.2245
}
},
"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": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.766,
"final": 2.4489,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 5.553,
"final": 6.1521,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.725,
"final": 1.4248,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 5.083,
"final": 6.2907,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.012,
"final": 0.593,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.188,
"final": 4.188,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2245,
"final": 1.2245,
"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": 60.0,
"ER": 28,
"H": 57,
"BB": 17,
"SO": 45,
"HR": 9,
"ERA": 4.2,
"WHIP": 1.2333333333333334,
"K9": 6.750000000000001,
"HR9": 1.35,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-28T00:00:00"
},
"recent_form_boost": 0.9789286694553321,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 2.0,
"predicted_H": 7.0,
"predicted_BB": 1.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "676440",
"player_name": "Tanner Bibee",
"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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 7.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 9.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": 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": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 9.0,
"delta": 1.0,
"percent_delta": 0.125,
"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": 8.0,
"after": 9.0,
"delta": 1.0,
"percent_delta": 0.125,
"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": 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": 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": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 9.0,
"delta": 1.0,
"percent_delta": 0.125,
"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": 8.0,
"after": 9.0,
"delta": 1.0,
"percent_delta": 0.125,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CLE",
"games": 139,
"wins": 70,
"losses": 69,
"win_pct": 0.5036,
"runs_scored": 563.0,
"runs_allowed": 571.0,
"run_differential": -8.0,
"run_differential_per_game": -0.0576,
"avg_runs_scored": 4.0504,
"avg_runs_allowed": 4.1079,
"offense_index": 0.9005,
"defense_index": 1.0949,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.0,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.066
},
"opponent": {
"team": "TOR",
"games": 140,
"wins": 69,
"losses": 71,
"win_pct": 0.4929,
"runs_scored": 560.0,
"runs_allowed": 604.0,
"run_differential": -44.0,
"run_differential_per_game": -0.3143,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.3143,
"offense_index": 0.8893,
"defense_index": 1.0426,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 3.9,
"run_differential": 7.0
},
"available": true,
"quality_score": -0.0095
},
"edges": {
"quality_edge": 0.0755,
"offense_edge": -0.0995,
"opponent_offense_edge": -0.1107,
"defense_strength": 0.0949,
"opponent_defense_weakness": -0.0426,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0103,
"run_prevention": 0.969,
"strikeout": 1.0111
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "676440",
"profile": {
"available": true,
"pitcher_id": "676440",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 582.0,
"k_percent": 19.3,
"bb_percent": 6.9,
"woba": 0.305,
"xwoba": 0.319,
"sweet_spot_percent": 34.7,
"barrel_batted_rate": 8.1,
"hard_hit_percent": 39.9,
"avg_best_speed": 78.9158,
"avg_hyper_speed": 94.0339,
"whiff_percent": 23.8,
"swing_percent": 47.0
},
"league_medians": {
"pa": 119.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6451,
"avg_hyper_speed": 93.9069,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.1459,
"command_and_miss": -0.1271,
"regression_edge": -0.4,
"xwoba_edge": -0.2286,
"barrel_edge": -0.1778,
"hard_hit_edge": -0.3,
"whiff_edge": -0.2,
"bb_edge": 0.55,
"pitch_design_score": -0.1252
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "676440",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 97,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 87.63291987951403,
"release_spin_rate": 2307.0595731062376,
"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": 97,
"pitch_usage": 0.0,
"release_speed": 87.63291987951403,
"release_spin_rate": 2307.0595731062376,
"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.6329,
"release_spin_rate": 2307.0596,
"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.1252,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.8941,
"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.1648,
"sample_weight": 1.0,
"run_prevention_factor": 1.014,
"strikeout_factor": 0.9771,
"walk_factor": 0.956,
"homer_factor": 1.0331,
"woba_minus_xwoba": -0.014,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "676440",
"espn_id": 4345278,
"player_name": "Tanner Bibee",
"team": "CLE",
"role": "pitcher",
"espn_rank": 60,
"espn_total_ranked": 851,
"metrics": {
"espn_rank": 60,
"gp_value": 28.0,
"gp_rank": 229,
"gs_value": 28.0,
"gs_rank": 6,
"qs_value": 17.0,
"qs_rank": 5,
"era_value": 3.8809,
"era_rank": 30.0,
"w_value": 5.0,
"w_rank": 136,
"l_value": 14.0,
"l_rank": 1,
"sv_value": 0.0,
"sv_rank": 245,
"hld_value": 0.0,
"hld_rank": 345,
"ip_value": 162.1,
"ip_rank": 9,
"h_value": 142.0,
"h_rank": 22,
"er_value": 70.0,
"er_rank": 21,
"hr_value": 26.0,
"hr_rank": 8,
"bb_value": 46.0,
"bb_rank": 46,
"k_value": 128.0,
"k_rank": 50,
"k_per_9_value": 7.0965095,
"k_per_9_rank": 150,
"whip_value": 1.1581,
"whip_rank": 23.0,
"war_value": 2.23,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.014,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.014,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.956,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0331,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9771,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 7,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 9,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 28,
"Pitches": 113,
"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": "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": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +4."
},
{
"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/20260903_TOR@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"
}
} |