| 20260917 | 20260917_BOS@TEX | away | Sonny Gray | Sonny Gray | True | 6.0 | 6.1 | 1 | 2 | 3 | 1 | 6/3 | 1/3 | 5/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.7574468085106383,
"WHIP": 1.1680851063829787,
"IP": 156.2,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.802,
"recent_avg_IP": 6.2,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0707,
"sample_weight": 1.0,
"run_prevention_factor": 0.994,
"strikeout_factor": 0.9891,
"walk_factor": 0.95,
"homer_factor": 0.9877,
"regression_flag": "neutral",
"k_percent": 22.0,
"bb_percent": 6.6,
"woba": 0.298,
"xwoba": 0.302,
"barrel_percent": 6.8,
"hard_hit_percent": 38.8,
"whiff_percent": 23.1
},
"espn_rank": {
"rank": 15,
"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": "543243",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.0,
"ER": 9.0,
"R": 9.0,
"H": 29.0,
"BB": 9.0,
"SO": 30.0,
"HR": 2.0,
"BF": 126.0,
"Pitches": 458.0
},
"per_game": {
"IP": 6.1,
"ER": 1.8,
"R": 1.8,
"H": 5.8,
"BB": 1.8,
"SO": 6.0,
"HR": 0.4,
"BF": 25.2,
"Pitches": 91.6
},
"rates": {
"ERA": 2.6129,
"WHIP": 1.2258,
"ER_per_IP": 0.29032,
"H_per_IP": 0.93548,
"BB_per_IP": 0.29032,
"SO_per_IP": 0.96774,
"HR_per_IP": 0.06452
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.0,
"ER": 21.0,
"R": 21.0,
"H": 60.0,
"BB": 18.0,
"SO": 55.0,
"HR": 5.0,
"BF": 254.0,
"Pitches": 903.0
},
"per_game": {
"IP": 6.0,
"ER": 2.1,
"R": 2.1,
"H": 6.0,
"BB": 1.8,
"SO": 5.5,
"HR": 0.5,
"BF": 25.4,
"Pitches": 90.3
},
"rates": {
"ERA": 3.0984,
"WHIP": 1.2787,
"ER_per_IP": 0.34426,
"H_per_IP": 0.98361,
"BB_per_IP": 0.29508,
"SO_per_IP": 0.90164,
"HR_per_IP": 0.08197
}
},
"season": {
"games": 27,
"totals": {
"IP": 156.2,
"ER": 48.0,
"R": 49.0,
"H": 141.0,
"BB": 42.0,
"SO": 140.0,
"HR": 15.0,
"BF": 636.0,
"Pitches": 2295.0
},
"per_game": {
"IP": 5.2,
"ER": 1.7778,
"R": 1.8148,
"H": 5.2222,
"BB": 1.5556,
"SO": 5.1852,
"HR": 0.5556,
"BF": 23.5556,
"Pitches": 85.0
},
"rates": {
"ERA": 2.7574,
"WHIP": 1.1681,
"ER_per_IP": 0.30638,
"H_per_IP": 0.9,
"BB_per_IP": 0.26809,
"SO_per_IP": 0.89362,
"HR_per_IP": 0.09574
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.079,
"predicted_H": 5.767,
"predicted_BB": 1.827,
"predicted_SO": 5.651,
"predicted_HR": 0.534,
"predicted_ERA": 3.0822,
"predicted_WHIP": 1.2509
}
},
"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": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.079,
"final": 2.0461,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.767,
"final": 5.8639,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.827,
"final": 1.483,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 5.651,
"final": 4.5482,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.534,
"final": 0.3119,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.0822,
"final": 3.0822,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2509,
"final": 1.2509,
"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": 21,
"H": 60,
"BB": 18,
"SO": 55,
"HR": 5,
"ERA": 3.098360655737705,
"WHIP": 1.278688524590164,
"K9": 8.114754098360656,
"HR9": 0.7377049180327869,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-11T00:00:00"
},
"recent_form_boost": 0.8488744424735861,
"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": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 3.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.0,
"predicted_ER": 2,
"predicted_H": 6,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "543243",
"player_name": "Sonny Gray",
"position": "Starter",
"team": "BOS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 6.0,
"delta": 3.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 6.0,
"delta": 3.0,
"percent_delta": 1.0,
"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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"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": 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": 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": 5.0,
"delta": -1.0,
"percent_delta": -0.1667,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 5.0,
"delta": -1.0,
"percent_delta": -0.1667,
"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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"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": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"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": "BOS",
"games": 152,
"wins": 82,
"losses": 70,
"win_pct": 0.5395,
"runs_scored": 668.0,
"runs_allowed": 586.0,
"run_differential": 82.0,
"run_differential_per_game": 0.5395,
"avg_runs_scored": 4.3947,
"avg_runs_allowed": 3.8553,
"offense_index": 0.9762,
"defense_index": 1.1677,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 3.1,
"run_differential": 3.0
},
"available": true,
"quality_score": 0.0995
},
"opponent": {
"team": "TEX",
"games": 152,
"wins": 76,
"losses": 76,
"win_pct": 0.5,
"runs_scored": 635.0,
"runs_allowed": 673.0,
"run_differential": -38.0,
"run_differential_per_game": -0.25,
"avg_runs_scored": 4.1776,
"avg_runs_allowed": 4.4276,
"offense_index": 0.928,
"defense_index": 1.0167,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.1,
"avg_runs_allowed": 4.6,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.0045
},
"edges": {
"quality_edge": 0.095,
"offense_edge": -0.0238,
"opponent_offense_edge": -0.072,
"defense_strength": 0.1677,
"opponent_defense_weakness": -0.0167,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0117,
"run_prevention": 0.967,
"strikeout": 1.0086
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "543243",
"profile": {
"available": true,
"pitcher_id": "543243",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 606.0,
"k_percent": 22.0,
"bb_percent": 6.6,
"woba": 0.298,
"xwoba": 0.302,
"sweet_spot_percent": 34.7,
"barrel_batted_rate": 6.8,
"hard_hit_percent": 38.8,
"avg_best_speed": 79.0329,
"avg_hyper_speed": 93.9378,
"whiff_percent": 23.1,
"swing_percent": 47.0
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1522,
"command_and_miss": 0.03,
"regression_edge": -0.1143,
"xwoba_edge": 0.2857,
"barrel_edge": 0.1111,
"hard_hit_edge": -0.1286,
"whiff_edge": -0.2714,
"bb_edge": 0.625,
"pitch_design_score": -0.1365
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "543243",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 93,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 87.41342480383189,
"release_spin_rate": 2501.8766778176932,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 87.41342480383189,
"release_spin_rate": 2501.8766778176932,
"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.4134,
"release_spin_rate": 2501.8767,
"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.1365,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.9747,
"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.0707,
"sample_weight": 1.0,
"run_prevention_factor": 0.994,
"strikeout_factor": 0.9891,
"walk_factor": 0.95,
"homer_factor": 0.9877,
"woba_minus_xwoba": -0.004,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "543243",
"espn_id": 32082,
"player_name": "Sonny Gray",
"team": "BOS",
"role": "pitcher",
"espn_rank": 15,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 15,
"gp_value": 27.0,
"gp_rank": 305,
"gs_value": 27.0,
"gs_rank": 54,
"qs_value": 18.0,
"qs_rank": 7,
"era_value": 2.7574,
"era_rank": 8.0,
"w_value": 17.0,
"w_rank": 1,
"l_value": 5.0,
"l_rank": 146,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 156.2,
"ip_rank": 43,
"h_value": 141.0,
"h_rank": 42,
"er_value": 48.0,
"er_rank": 125,
"hr_value": 15.0,
"hr_rank": 100,
"bb_value": 42.0,
"bb_rank": 83,
"k_value": 140.0,
"k_rank": 49,
"k_per_9_value": 8.042553,
"k_per_9_rank": 30,
"whip_value": 1.168,
"whip_rank": 21.0,
"war_value": 3.97,
"war_rank": 12.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.994,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 0.994,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.95,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9877,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 0.9891,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 6,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"Pitches": 101,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
}
],
"provenance": {
"prediction": "output/games/20260917_BOS@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"
}
} |
| 20260917 | 20260917_BOS@TEX | home | Tyler Alexander | Tyler Alexander | True | 5.0 | 1.0 | -12 | 1 | 0 | -1 | 3/0 | 0/1 | 1/0 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.3749999999999996,
"WHIP": 1.275,
"IP": 66.2,
"games_started": null,
"games_pitched": 68,
"role_avg_IP": 1.25,
"recent_avg_IP": 1.25,
"last_start_IP": 2.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4509,
"sample_weight": 1.0,
"run_prevention_factor": 0.9617,
"strikeout_factor": 0.9709,
"walk_factor": 0.958,
"homer_factor": 0.8764,
"regression_flag": "neutral",
"k_percent": 20.0,
"bb_percent": 7.0,
"woba": 0.296,
"xwoba": 0.275,
"barrel_percent": 3.9,
"hard_hit_percent": 32.4,
"whiff_percent": 21.9
},
"espn_rank": {
"rank": 230,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 66.2,
"season_ERA": 3.375,
"season_WHIP": 1.275,
"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": 13.497,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7297,
"prior_weight": 0.2703
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "641302",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 68,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 6.0,
"ER": 3.0,
"R": 3.0,
"H": 6.0,
"BB": 1.0,
"SO": 4.0,
"HR": 1.0,
"BF": 25.0,
"Pitches": 88.0
},
"per_game": {
"IP": 1.1,
"ER": 0.6,
"R": 0.6,
"H": 1.2,
"BB": 0.2,
"SO": 0.8,
"HR": 0.2,
"BF": 5.0,
"Pitches": 17.6
},
"rates": {
"ERA": 4.5,
"WHIP": 1.1667,
"ER_per_IP": 0.5,
"H_per_IP": 1.0,
"BB_per_IP": 0.16667,
"SO_per_IP": 0.66667,
"HR_per_IP": 0.16667
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 11.0,
"ER": 5.0,
"R": 5.0,
"H": 10.0,
"BB": 3.0,
"SO": 8.0,
"HR": 1.0,
"BF": 47.0,
"Pitches": 175.0
},
"per_game": {
"IP": 1.0,
"ER": 0.5,
"R": 0.5,
"H": 1.0,
"BB": 0.3,
"SO": 0.8,
"HR": 0.1,
"BF": 4.7,
"Pitches": 17.5
},
"rates": {
"ERA": 4.0909,
"WHIP": 1.1818,
"ER_per_IP": 0.45455,
"H_per_IP": 0.90909,
"BB_per_IP": 0.27273,
"SO_per_IP": 0.72727,
"HR_per_IP": 0.09091
}
},
"season": {
"games": 68,
"totals": {
"IP": 66.2,
"ER": 25.0,
"R": 29.0,
"H": 66.0,
"BB": 19.0,
"SO": 57.0,
"HR": 3.0,
"BF": 284.0,
"Pitches": 1089.0
},
"per_game": {
"IP": 1.0,
"ER": 0.3676,
"R": 0.4265,
"H": 0.9706,
"BB": 0.2794,
"SO": 0.8382,
"HR": 0.0441,
"BF": 4.1765,
"Pitches": 16.0147
},
"rates": {
"ERA": 3.375,
"WHIP": 1.275,
"ER_per_IP": 0.375,
"H_per_IP": 0.99,
"BB_per_IP": 0.285,
"SO_per_IP": 0.855,
"HR_per_IP": 0.045
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 2.1,
"predicted_ER": 1.033,
"predicted_H": 2.122,
"predicted_BB": 0.585,
"predicted_SO": 1.715,
"predicted_HR": 0.273,
"predicted_ERA": 4.243,
"predicted_WHIP": 1.2356
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4642,
"form_weight": 0.5358,
"form_reliability": 0.7297,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 13.497,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7297,
"prior_weight": 0.2703
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 2.1,
"final": 3.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.033,
"final": 1.0177,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 2.122,
"final": 2.5296,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 0.585,
"final": 0.3134,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 1.715,
"final": 1.3831,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.273,
"final": 1.0747,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.243,
"final": 4.243,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2356,
"final": 1.2356,
"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": 11.0,
"ER": 5,
"H": 10,
"BB": 3,
"SO": 8,
"HR": 1,
"ERA": 4.090909090909091,
"WHIP": 1.1818181818181819,
"K9": 6.545454545454546,
"HR9": 0.8181818181818182,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.9848291791365245,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_BB": 0.0,
"predicted_SO": 1.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 13.497,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7297,
"prior_weight": 0.2703
}
},
{
"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": 3,
"predicted_BB": 0,
"predicted_SO": 1,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "641302",
"player_name": "Tyler Alexander",
"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": 0.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_SO": 1.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_SO": 1.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": 1.0,
"after": 1.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.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_R": 1.0,
"predicted_SO": 1.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": 1.0,
"after": 1.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.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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": 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.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TEX",
"games": 152,
"wins": 76,
"losses": 76,
"win_pct": 0.5,
"runs_scored": 635.0,
"runs_allowed": 673.0,
"run_differential": -38.0,
"run_differential_per_game": -0.25,
"avg_runs_scored": 4.1776,
"avg_runs_allowed": 4.4276,
"offense_index": 0.928,
"defense_index": 1.0167,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.1,
"avg_runs_allowed": 4.6,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.0045
},
"opponent": {
"team": "BOS",
"games": 152,
"wins": 82,
"losses": 70,
"win_pct": 0.5395,
"runs_scored": 668.0,
"runs_allowed": 586.0,
"run_differential": 82.0,
"run_differential_per_game": 0.5395,
"avg_runs_scored": 4.3947,
"avg_runs_allowed": 3.8553,
"offense_index": 0.9762,
"defense_index": 1.1677,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 3.1,
"run_differential": 3.0
},
"available": true,
"quality_score": 0.0995
},
"edges": {
"quality_edge": -0.095,
"offense_edge": -0.072,
"opponent_offense_edge": -0.0238,
"defense_strength": 0.0167,
"opponent_defense_weakness": -0.1677,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9977,
"run_prevention": 0.9993,
"strikeout": 0.9991
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "641302",
"profile": {
"available": true,
"pitcher_id": "641302",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 277.0,
"k_percent": 20.0,
"bb_percent": 7.0,
"woba": 0.296,
"xwoba": 0.275,
"sweet_spot_percent": 29.4,
"barrel_batted_rate": 3.9,
"hard_hit_percent": 32.4,
"avg_best_speed": 75.1952,
"avg_hyper_speed": 92.9346,
"whiff_percent": 21.9,
"swing_percent": 46.6
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.802,
"command_and_miss": -0.1786,
"regression_edge": 0.6,
"xwoba_edge": 1.0571,
"barrel_edge": 0.7556,
"hard_hit_edge": 0.7857,
"whiff_edge": -0.4429,
"bb_edge": 0.525,
"pitch_design_score": -0.1481
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "641302",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 18,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 18,
"pitch_usage": 0.0,
"release_speed": 87.20540065553065,
"release_spin_rate": 2104.3089327030793,
"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": 18,
"pitch_usage": 0.0,
"release_speed": 87.20540065553065,
"release_spin_rate": 2104.3089327030793,
"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.2054,
"release_spin_rate": 2104.3089,
"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.4509,
"sample_weight": 1.0,
"run_prevention_factor": 0.9617,
"strikeout_factor": 0.9709,
"walk_factor": 0.958,
"homer_factor": 0.8764,
"woba_minus_xwoba": 0.021,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "641302",
"espn_id": 40360,
"player_name": "Tyler Alexander",
"team": "TEX",
"role": "pitcher",
"espn_rank": 230,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 230,
"gp_value": 68.0,
"gp_rank": 16,
"gs_value": 4.0,
"gs_rank": 239,
"qs_value": 0.0,
"qs_rank": 214,
"era_value": 3.375,
"era_rank": null,
"w_value": 5.0,
"w_rank": 157,
"l_value": 2.0,
"l_rank": 338,
"sv_value": 4.0,
"sv_rank": 55,
"hld_value": 13.0,
"hld_rank": 52,
"ip_value": 66.2,
"ip_rank": 211,
"h_value": 66.0,
"h_rank": 187,
"er_value": 25.0,
"er_rank": 254,
"hr_value": 3.0,
"hr_rank": 457,
"bb_value": 19.0,
"bb_rank": 325,
"k_value": 57.0,
"k_rank": 263,
"k_per_9_value": 7.695,
"k_per_9_rank": 33,
"whip_value": 1.275,
"whip_rank": null,
"war_value": 0.68,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9617,
"adjusted": 1
},
"predicted_H": {
"original": 2.0,
"factor": 0.9617,
"adjusted": 2
},
"predicted_BB": {
"original": 1.0,
"factor": 0.958,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.8764,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9709,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 3,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 1,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 18,
"Pitches": 72,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -12 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260917_BOS@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"
}
} |
| 20260917 | 20260917_DET@CHW | away | Framber Valdez | Framber Valdez | True | 6.0 | 5.0 | -3 | 3 | 3 | 0 | 5/3 | 5/4 | 8/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.014256619144603,
"WHIP": 1.3625254582484725,
"IP": 163.2,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.644,
"recent_avg_IP": 6.133,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2234,
"sample_weight": 1.0,
"run_prevention_factor": 1.019,
"strikeout_factor": 0.9411,
"walk_factor": 0.986,
"homer_factor": 1.0021,
"regression_flag": "neutral",
"k_percent": 17.0,
"bb_percent": 8.4,
"woba": 0.317,
"xwoba": 0.323,
"barrel_percent": 5.6,
"hard_hit_percent": 41.9,
"whiff_percent": 19.7
},
"espn_rank": {
"rank": 130,
"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": "664285",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.2,
"ER": 10.0,
"R": 13.0,
"H": 28.0,
"BB": 10.0,
"SO": 15.0,
"HR": 2.0,
"BF": 126.0,
"Pitches": 464.0
},
"per_game": {
"IP": 6.0,
"ER": 2.0,
"R": 2.6,
"H": 5.6,
"BB": 2.0,
"SO": 3.0,
"HR": 0.4,
"BF": 25.2,
"Pitches": 92.8
},
"rates": {
"ERA": 2.9348,
"WHIP": 1.2391,
"ER_per_IP": 0.32609,
"H_per_IP": 0.91304,
"BB_per_IP": 0.32609,
"SO_per_IP": 0.48913,
"HR_per_IP": 0.06522
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 56.0,
"ER": 24.0,
"R": 28.0,
"H": 57.0,
"BB": 24.0,
"SO": 34.0,
"HR": 4.0,
"BF": 244.0,
"Pitches": 896.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.8,
"H": 5.7,
"BB": 2.4,
"SO": 3.4,
"HR": 0.4,
"BF": 24.4,
"Pitches": 89.6
},
"rates": {
"ERA": 3.8571,
"WHIP": 1.4464,
"ER_per_IP": 0.42857,
"H_per_IP": 1.01786,
"BB_per_IP": 0.42857,
"SO_per_IP": 0.60714,
"HR_per_IP": 0.07143
}
},
"season": {
"games": 29,
"totals": {
"IP": 163.2,
"ER": 73.0,
"R": 82.0,
"H": 163.0,
"BB": 60.0,
"SO": 121.0,
"HR": 15.0,
"BF": 713.0,
"Pitches": 2591.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5172,
"R": 2.8276,
"H": 5.6207,
"BB": 2.069,
"SO": 4.1724,
"HR": 0.5172,
"BF": 24.5862,
"Pitches": 89.3448
},
"rates": {
"ERA": 4.0143,
"WHIP": 1.3625,
"ER_per_IP": 0.44603,
"H_per_IP": 0.99593,
"BB_per_IP": 0.3666,
"SO_per_IP": 0.73931,
"HR_per_IP": 0.09165
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.357,
"predicted_H": 5.655,
"predicted_BB": 2.165,
"predicted_SO": 3.699,
"predicted_HR": 0.489,
"predicted_ERA": 3.6309,
"predicted_WHIP": 1.3382
}
},
"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.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.357,
"final": 2.622,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.655,
"final": 5.385,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 5.0,
"form": 2.165,
"final": 3.3334,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.699,
"final": 4.2352,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.489,
"final": 0.2875,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.6309,
"final": 3.6309,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3382,
"final": 1.3382,
"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.0,
"ER": 24,
"H": 57,
"BB": 24,
"SO": 34,
"HR": 4,
"ERA": 3.857142857142857,
"WHIP": 1.4464285714285714,
"K9": 5.464285714285714,
"HR9": 0.6428571428571429,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-11T00:00:00"
},
"recent_form_boost": 0.9384309413026259,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 5.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "664285",
"player_name": "Framber Valdez",
"position": "Starter",
"team": "DET",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"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": 5.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 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": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"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": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"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": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"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": "DET",
"games": 152,
"wins": 72,
"losses": 80,
"win_pct": 0.4737,
"runs_scored": 683.0,
"runs_allowed": 607.0,
"run_differential": 76.0,
"run_differential_per_game": 0.5,
"avg_runs_scored": 4.4934,
"avg_runs_allowed": 3.9934,
"offense_index": 0.9982,
"defense_index": 1.1273,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.8,
"avg_runs_allowed": 3.3,
"run_differential": 25.0
},
"available": true,
"quality_score": 0.1087
},
"opponent": {
"team": "CHW",
"games": 152,
"wins": 77,
"losses": 75,
"win_pct": 0.5066,
"runs_scored": 711.0,
"runs_allowed": 677.0,
"run_differential": 34.0,
"run_differential_per_game": 0.2237,
"avg_runs_scored": 4.6776,
"avg_runs_allowed": 4.4539,
"offense_index": 1.0391,
"defense_index": 1.0107,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.7,
"run_differential": -6.0
},
"available": true,
"quality_score": -0.0371
},
"edges": {
"quality_edge": 0.1458,
"offense_edge": -0.0018,
"opponent_offense_edge": 0.0391,
"defense_strength": 0.1273,
"opponent_defense_weakness": -0.0107,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0081,
"run_prevention": 0.9862,
"strikeout": 1.0012
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "664285",
"profile": {
"available": true,
"pitcher_id": "664285",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 684.0,
"k_percent": 17.0,
"bb_percent": 8.4,
"woba": 0.317,
"xwoba": 0.323,
"sweet_spot_percent": 28.8,
"barrel_batted_rate": 5.6,
"hard_hit_percent": 41.9,
"avg_best_speed": 79.3095,
"avg_hyper_speed": 94.6238,
"whiff_percent": 19.7,
"swing_percent": 47.1
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0993,
"command_and_miss": -0.5514,
"regression_edge": -0.1714,
"xwoba_edge": -0.3143,
"barrel_edge": 0.3778,
"hard_hit_edge": -0.5714,
"whiff_edge": -0.7571,
"bb_edge": 0.175,
"pitch_design_score": -0.0915
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "664285",
"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": 88.2158276222486,
"release_spin_rate": 2283.7780946197977,
"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": 88.2158276222486,
"release_spin_rate": 2283.7780946197977,
"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.2158,
"release_spin_rate": 2283.7781,
"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.0915,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.6537,
"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.2234,
"sample_weight": 1.0,
"run_prevention_factor": 1.019,
"strikeout_factor": 0.9411,
"walk_factor": 0.986,
"homer_factor": 1.0021,
"woba_minus_xwoba": -0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "664285",
"espn_id": 36581,
"player_name": "Framber Valdez",
"team": "DET",
"role": "pitcher",
"espn_rank": 130,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 130,
"gp_value": 29.0,
"gp_rank": 268,
"gs_value": 29.0,
"gs_rank": 27,
"qs_value": 16.0,
"qs_rank": 17,
"era_value": 4.0142,
"era_rank": 34.0,
"w_value": 10.0,
"w_rank": 35,
"l_value": 10.0,
"l_rank": 22,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 163.2,
"ip_rank": 30,
"h_value": 163.0,
"h_rank": 11,
"er_value": 73.0,
"er_rank": 25,
"hr_value": 15.0,
"hr_rank": 100,
"bb_value": 60.0,
"bb_rank": 18,
"k_value": 121.0,
"k_rank": 73,
"k_per_9_value": 6.653768,
"k_per_9_rank": 65,
"whip_value": 1.3625,
"whip_rank": 41.0,
"war_value": 1.42,
"war_rank": 38.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.019,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 1.019,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.986,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0021,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9411,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 5,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 28,
"Pitches": 123,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260917_DET@CHW.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_DET@CHW | home | Erick Fedde | Erick Fedde | True | 4.2 | 4.2 | 0 | 5 | 1 | -4 | 5/4 | 2/2 | 3/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.9725685785536164,
"WHIP": 1.3391521197007483,
"IP": 133.2,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 4.833,
"recent_avg_IP": 4.667,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3955,
"sample_weight": 1.0,
"run_prevention_factor": 1.0336,
"strikeout_factor": 0.9257,
"walk_factor": 0.986,
"homer_factor": 1.0443,
"regression_flag": "neutral",
"k_percent": 15.9,
"bb_percent": 8.4,
"woba": 0.328,
"xwoba": 0.331,
"barrel_percent": 8.2,
"hard_hit_percent": 40.0,
"whiff_percent": 18.1
},
"espn_rank": {
"rank": 99,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "607200",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.0,
"ER": 4.0,
"R": 4.0,
"H": 16.0,
"BB": 8.0,
"SO": 14.0,
"HR": 1.0,
"BF": 93.0,
"Pitches": 386.0
},
"per_game": {
"IP": 4.2,
"ER": 0.8,
"R": 0.8,
"H": 3.2,
"BB": 1.6,
"SO": 2.8,
"HR": 0.2,
"BF": 18.6,
"Pitches": 77.2
},
"rates": {
"ERA": 1.5,
"WHIP": 1.0,
"ER_per_IP": 0.16667,
"H_per_IP": 0.66667,
"BB_per_IP": 0.33333,
"SO_per_IP": 0.58333,
"HR_per_IP": 0.04167
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 36.1,
"ER": 13.0,
"R": 15.0,
"H": 31.0,
"BB": 12.0,
"SO": 23.0,
"HR": 4.0,
"BF": 149.0,
"Pitches": 598.0
},
"per_game": {
"IP": 3.2,
"ER": 1.3,
"R": 1.5,
"H": 3.1,
"BB": 1.2,
"SO": 2.3,
"HR": 0.4,
"BF": 14.9,
"Pitches": 59.8
},
"rates": {
"ERA": 3.2202,
"WHIP": 1.1835,
"ER_per_IP": 0.3578,
"H_per_IP": 0.85321,
"BB_per_IP": 0.33028,
"SO_per_IP": 0.63303,
"HR_per_IP": 0.11009
}
},
"season": {
"games": 31,
"totals": {
"IP": 133.2,
"ER": 59.0,
"R": 67.0,
"H": 131.0,
"BB": 48.0,
"SO": 91.0,
"HR": 23.0,
"BF": 572.0,
"Pitches": 2260.0
},
"per_game": {
"IP": 4.1,
"ER": 1.9032,
"R": 2.1613,
"H": 4.2258,
"BB": 1.5484,
"SO": 2.9355,
"HR": 0.7419,
"BF": 18.4516,
"Pitches": 72.9032
},
"rates": {
"ERA": 3.9726,
"WHIP": 1.3392,
"ER_per_IP": 0.4414,
"H_per_IP": 0.98005,
"BB_per_IP": 0.3591,
"SO_per_IP": 0.6808,
"HR_per_IP": 0.17207
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 1.372,
"predicted_H": 3.531,
"predicted_BB": 1.475,
"predicted_SO": 2.862,
"predicted_HR": 0.429,
"predicted_ERA": 2.867,
"predicted_WHIP": 1.1622
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.1,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 1.372,
"final": 2.8547,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 3.531,
"final": 4.1314,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.475,
"final": 1.6896,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 2.862,
"final": 2.5097,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.429,
"final": 1.071,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.867,
"final": 2.867,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1622,
"final": 1.1622,
"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": 36.1,
"ER": 13,
"H": 31,
"BB": 12,
"SO": 23,
"HR": 4,
"ERA": 3.2201834862385326,
"WHIP": 1.1834862385321103,
"K9": 5.6972477064220195,
"HR9": 0.9908256880733947,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-10T00:00:00"
},
"recent_form_boost": 0.8601994537534777,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 2.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "607200",
"player_name": "Erick Fedde",
"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": 2.0,
"predicted_ER": 5.0,
"predicted_H": 5.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 4.2,
"predicted_R": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.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.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"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": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"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": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CHW",
"games": 152,
"wins": 77,
"losses": 75,
"win_pct": 0.5066,
"runs_scored": 711.0,
"runs_allowed": 677.0,
"run_differential": 34.0,
"run_differential_per_game": 0.2237,
"avg_runs_scored": 4.6776,
"avg_runs_allowed": 4.4539,
"offense_index": 1.0391,
"defense_index": 1.0107,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.7,
"run_differential": -6.0
},
"available": true,
"quality_score": -0.0371
},
"opponent": {
"team": "DET",
"games": 152,
"wins": 72,
"losses": 80,
"win_pct": 0.4737,
"runs_scored": 683.0,
"runs_allowed": 607.0,
"run_differential": 76.0,
"run_differential_per_game": 0.5,
"avg_runs_scored": 4.4934,
"avg_runs_allowed": 3.9934,
"offense_index": 0.9982,
"defense_index": 1.1273,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.8,
"avg_runs_allowed": 3.3,
"run_differential": 25.0
},
"available": true,
"quality_score": 0.1087
},
"edges": {
"quality_edge": -0.1458,
"offense_edge": 0.0391,
"opponent_offense_edge": -0.0018,
"defense_strength": 0.0107,
"opponent_defense_weakness": -0.1273,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9946,
"run_prevention": 1.0059,
"strikeout": 0.9958
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "607200",
"profile": {
"available": true,
"pitcher_id": "607200",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 549.0,
"k_percent": 15.9,
"bb_percent": 8.4,
"woba": 0.328,
"xwoba": 0.331,
"sweet_spot_percent": 35.7,
"barrel_batted_rate": 8.2,
"hard_hit_percent": 40.0,
"avg_best_speed": 77.4952,
"avg_hyper_speed": 94.0399,
"whiff_percent": 18.1,
"swing_percent": 42.7
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.3523,
"command_and_miss": -0.7021,
"regression_edge": -0.0857,
"xwoba_edge": -0.5429,
"barrel_edge": -0.2,
"hard_hit_edge": -0.3,
"whiff_edge": -0.9857,
"bb_edge": 0.175,
"pitch_design_score": -0.0885
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "607200",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 71,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 71,
"pitch_usage": 0.0,
"release_speed": 88.26911645828974,
"release_spin_rate": 2238.6521473255066,
"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": 71,
"pitch_usage": 0.0,
"release_speed": 88.26911645828974,
"release_spin_rate": 2238.6521473255066,
"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.2691,
"release_spin_rate": 2238.6521,
"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.0885,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.6324,
"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.3955,
"sample_weight": 1.0,
"run_prevention_factor": 1.0336,
"strikeout_factor": 0.9257,
"walk_factor": 0.986,
"homer_factor": 1.0443,
"woba_minus_xwoba": -0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "607200",
"espn_id": 33793,
"player_name": "Erick Fedde",
"team": "CHW",
"role": "pitcher",
"espn_rank": 99,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 99,
"gp_value": 31.0,
"gp_rank": 220,
"gs_value": 14.0,
"gs_rank": 150,
"qs_value": 1.0,
"qs_rank": 179,
"era_value": 3.9725,
"era_rank": null,
"w_value": 8.0,
"w_rank": 71,
"l_value": 9.0,
"l_rank": 36,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 133.2,
"ip_rank": 82,
"h_value": 131.0,
"h_rank": 66,
"er_value": 59.0,
"er_rank": 79,
"hr_value": 23.0,
"hr_rank": 22,
"bb_value": 48.0,
"bb_rank": 53,
"k_value": 91.0,
"k_rank": 133,
"k_per_9_value": 6.127182,
"k_per_9_rank": 43,
"whip_value": 1.3391,
"whip_rank": null,
"war_value": 1.8,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0336,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0336,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.986,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0443,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9257,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 5,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 21,
"Pitches": 84,
"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": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260917_DET@CHW.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_KC@HOU | away | Seth Lugo | Seth Lugo | True | 5.0 | 5.0 | 0 | 1 | 4 | 3 | 5/8 | 1/1 | 5/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.9939024390243905,
"WHIP": 1.451219512195122,
"IP": 164.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.467,
"recent_avg_IP": 4.933,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.4934,
"sample_weight": 1.0,
"run_prevention_factor": 1.0419,
"strikeout_factor": 0.9389,
"walk_factor": 0.968,
"homer_factor": 1.0605,
"regression_flag": "neutral",
"k_percent": 17.8,
"bb_percent": 7.5,
"woba": 0.352,
"xwoba": 0.343,
"barrel_percent": 7.7,
"hard_hit_percent": 42.6,
"whiff_percent": 18.5
},
"espn_rank": {
"rank": 660,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "607625",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.2,
"ER": 20.0,
"R": 20.0,
"H": 39.0,
"BB": 7.0,
"SO": 18.0,
"HR": 3.0,
"BF": 116.0,
"Pitches": 468.0
},
"per_game": {
"IP": 5.0,
"ER": 4.0,
"R": 4.0,
"H": 7.8,
"BB": 1.4,
"SO": 3.6,
"HR": 0.6,
"BF": 23.2,
"Pitches": 93.6
},
"rates": {
"ERA": 7.2973,
"WHIP": 1.8649,
"ER_per_IP": 0.81081,
"H_per_IP": 1.58108,
"BB_per_IP": 0.28378,
"SO_per_IP": 0.72973,
"HR_per_IP": 0.12162
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.1,
"ER": 37.0,
"R": 37.0,
"H": 65.0,
"BB": 17.0,
"SO": 37.0,
"HR": 4.0,
"BF": 236.0,
"Pitches": 921.0
},
"per_game": {
"IP": 5.1,
"ER": 3.7,
"R": 3.7,
"H": 6.5,
"BB": 1.7,
"SO": 3.7,
"HR": 0.4,
"BF": 23.6,
"Pitches": 92.1
},
"rates": {
"ERA": 6.2437,
"WHIP": 1.5375,
"ER_per_IP": 0.69375,
"H_per_IP": 1.21875,
"BB_per_IP": 0.31875,
"SO_per_IP": 0.69375,
"HR_per_IP": 0.075
}
},
"season": {
"games": 30,
"totals": {
"IP": 164.0,
"ER": 91.0,
"R": 99.0,
"H": 185.0,
"BB": 53.0,
"SO": 126.0,
"HR": 19.0,
"BF": 709.0,
"Pitches": 2710.0
},
"per_game": {
"IP": 5.1,
"ER": 3.0333,
"R": 3.3,
"H": 6.1667,
"BB": 1.7667,
"SO": 4.2,
"HR": 0.6333,
"BF": 23.6333,
"Pitches": 90.3333
},
"rates": {
"ERA": 4.9939,
"WHIP": 1.4512,
"ER_per_IP": 0.55488,
"H_per_IP": 1.12805,
"BB_per_IP": 0.32317,
"SO_per_IP": 0.76829,
"HR_per_IP": 0.11585
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 3.549,
"predicted_H": 6.747,
"predicted_BB": 1.618,
"predicted_SO": 3.895,
"predicted_HR": 0.569,
"predicted_ERA": 6.1928,
"predicted_WHIP": 1.6221
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 3.549,
"final": 2.503,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 6.747,
"final": 6.0301,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.618,
"final": 1.3644,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.895,
"final": 4.3485,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.569,
"final": 0.3355,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.1928,
"final": 6.1928,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.6221,
"final": 1.6221,
"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": 53.1,
"ER": 37,
"H": 65,
"BB": 17,
"SO": 37,
"HR": 4,
"ERA": 6.24375,
"WHIP": 1.5375,
"K9": 6.24375,
"HR9": 0.675,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-11T00:00:00"
},
"recent_form_boost": 1.20920103058834,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "607625",
"player_name": "Seth Lugo",
"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": 1.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 5.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": 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": 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": 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": 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,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "KC",
"games": 152,
"wins": 67,
"losses": 85,
"win_pct": 0.4408,
"runs_scored": 641.0,
"runs_allowed": 734.0,
"run_differential": -93.0,
"run_differential_per_game": -0.6118,
"avg_runs_scored": 4.2171,
"avg_runs_allowed": 4.8289,
"offense_index": 0.9364,
"defense_index": 0.9326,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 3.4,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.16
},
"opponent": {
"team": "HOU",
"games": 152,
"wins": 76,
"losses": 76,
"win_pct": 0.5,
"runs_scored": 675.0,
"runs_allowed": 729.0,
"run_differential": -54.0,
"run_differential_per_game": -0.3553,
"avg_runs_scored": 4.4408,
"avg_runs_allowed": 4.7961,
"offense_index": 0.9861,
"defense_index": 0.939,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 5.1,
"run_differential": -18.0
},
"available": true,
"quality_score": -0.1134
},
"edges": {
"quality_edge": -0.0466,
"offense_edge": -0.0636,
"opponent_offense_edge": -0.0139,
"defense_strength": -0.0674,
"opponent_defense_weakness": 0.061,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9967,
"run_prevention": 1.0068,
"strikeout": 0.9997
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "607625",
"profile": {
"available": true,
"pitcher_id": "607625",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 680.0,
"k_percent": 17.8,
"bb_percent": 7.5,
"woba": 0.352,
"xwoba": 0.343,
"sweet_spot_percent": 36.5,
"barrel_batted_rate": 7.7,
"hard_hit_percent": 42.6,
"avg_best_speed": 79.062,
"avg_hyper_speed": 94.5511,
"whiff_percent": 18.5,
"swing_percent": 45.8
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.6551,
"command_and_miss": -0.515,
"regression_edge": 0.2571,
"xwoba_edge": -0.8857,
"barrel_edge": -0.0889,
"hard_hit_edge": -0.6714,
"whiff_edge": -0.9286,
"bb_edge": 0.4,
"pitch_design_score": -0.2299
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "607625",
"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": 85.74421116833972,
"release_spin_rate": 2515.1977962575334,
"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": 85.74421116833972,
"release_spin_rate": 2515.1977962575334,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 85.7442,
"release_spin_rate": 2515.1978,
"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.2299,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.6424,
"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.4934,
"sample_weight": 1.0,
"run_prevention_factor": 1.0419,
"strikeout_factor": 0.9389,
"walk_factor": 0.968,
"homer_factor": 1.0605,
"woba_minus_xwoba": 0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "607625",
"espn_id": 34873,
"player_name": "Seth Lugo",
"team": "KC",
"role": "pitcher",
"espn_rank": 660,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 660,
"gp_value": 30.0,
"gp_rank": 240,
"gs_value": 30.0,
"gs_rank": 9,
"qs_value": 14.0,
"qs_rank": 27,
"era_value": 4.9939,
"era_rank": 46.0,
"w_value": 7.0,
"w_rank": 90,
"l_value": 8.0,
"l_rank": 68,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 164.0,
"ip_rank": 29,
"h_value": 185.0,
"h_rank": 5,
"er_value": 91.0,
"er_rank": 2,
"hr_value": 19.0,
"hr_rank": 59,
"bb_value": 53.0,
"bb_rank": 40,
"k_value": 126.0,
"k_rank": 66,
"k_per_9_value": 6.9146347,
"k_per_9_rank": 61,
"whip_value": 1.4512,
"whip_rank": 44.0,
"war_value": -0.2,
"war_rank": 47.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0419,
"adjusted": 4
},
"predicted_H": {
"original": 7.0,
"factor": 1.0419,
"adjusted": 7
},
"predicted_BB": {
"original": 2.0,
"factor": 0.968,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0605,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9389,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 94,
"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": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +4."
}
],
"provenance": {
"prediction": "output/games/20260917_KC@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"
}
} |
| 20260917 | 20260917_KC@HOU | home | Miguel Ullola | Miguel Ullola | True | 3.0 | 0.2 | -7 | 4 | 1 | -3 | 5/0 | 1/2 | 5/0 | Last 10 before this game (6 available){
"model_context": {
"embedded_season": {
"ERA": 3.375,
"WHIP": 0.75,
"IP": 8.0,
"games_started": null,
"games_pitched": 6,
"role_avg_IP": 1.0,
"recent_avg_IP": 1.0,
"last_start_IP": 1.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2466,
"sample_weight": 0.45,
"run_prevention_factor": 0.979,
"strikeout_factor": 1.0388,
"walk_factor": 0.9478,
"homer_factor": 1.0513,
"regression_flag": "neutral",
"k_percent": 33.3,
"bb_percent": 3.3,
"woba": 0.261,
"xwoba": 0.276,
"barrel_percent": 15.8,
"hard_hit_percent": 36.8,
"whiff_percent": 28.8
},
"espn_rank": {
"rank": 388,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.8653846153846154,
"last_10": 0.1346153846153846
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 1.62,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2447,
"prior_weight": 0.7553
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "699044",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 6,
"reference_playing_time": 4.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 6.0,
"ER": 3.0,
"R": 3.0,
"H": 3.0,
"BB": 1.0,
"SO": 6.0,
"HR": 2.0,
"BF": 22.0,
"Pitches": 89.0
},
"per_game": {
"IP": 1.1,
"ER": 0.6,
"R": 0.6,
"H": 0.6,
"BB": 0.2,
"SO": 1.2,
"HR": 0.4,
"BF": 4.4,
"Pitches": 17.8
},
"rates": {
"ERA": 4.5,
"WHIP": 0.6667,
"ER_per_IP": 0.5,
"H_per_IP": 0.5,
"BB_per_IP": 0.16667,
"SO_per_IP": 1.0,
"HR_per_IP": 0.33333
}
},
"last_10": {
"games": 6,
"totals": {
"IP": 8.0,
"ER": 3.0,
"R": 3.0,
"H": 5.0,
"BB": 1.0,
"SO": 10.0,
"HR": 2.0,
"BF": 30.0,
"Pitches": 119.0
},
"per_game": {
"IP": 1.1,
"ER": 0.5,
"R": 0.5,
"H": 0.8333,
"BB": 0.1667,
"SO": 1.6667,
"HR": 0.3333,
"BF": 5.0,
"Pitches": 19.8333
},
"rates": {
"ERA": 3.375,
"WHIP": 0.75,
"ER_per_IP": 0.375,
"H_per_IP": 0.625,
"BB_per_IP": 0.125,
"SO_per_IP": 1.25,
"HR_per_IP": 0.25
}
},
"season": {
"games": 6,
"totals": {
"IP": 8.0,
"ER": 3.0,
"R": 3.0,
"H": 5.0,
"BB": 1.0,
"SO": 10.0,
"HR": 2.0,
"BF": 30.0,
"Pitches": 119.0
},
"per_game": {
"IP": 1.1,
"ER": 0.5,
"R": 0.5,
"H": 0.8333,
"BB": 0.1667,
"SO": 1.6667,
"HR": 0.3333,
"BF": 5.0,
"Pitches": 19.8333
},
"rates": {
"ERA": 3.375,
"WHIP": 0.75,
"ER_per_IP": 0.375,
"H_per_IP": 0.625,
"BB_per_IP": 0.125,
"SO_per_IP": 1.25,
"HR_per_IP": 0.25
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.1,
"predicted_ER": 1.672,
"predicted_H": 2.89,
"predicted_BB": 1.076,
"predicted_SO": 3.216,
"predicted_HR": 0.637,
"predicted_ERA": 4.4956,
"predicted_WHIP": 1.1848
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.6691,
"form_weight": 0.3309,
"form_reliability": 0.2447,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 1.62,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2447,
"prior_weight": 0.7553
},
"applied_metrics": {
"predicted_IP": {
"model": 4.0,
"form": 3.1,
"final": 3.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 1.672,
"final": 3.2297,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 2.89,
"final": 4.3018,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.076,
"final": 1.0251,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.216,
"final": 4.4097,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.637,
"final": 1.549,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4956,
"final": 4.4956,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1848,
"final": 1.1848,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 8.0,
"ER": 3,
"H": 5,
"BB": 1,
"SO": 10,
"HR": 2,
"ERA": 3.375,
"WHIP": 0.75,
"K9": 11.25,
"HR9": 2.25,
"games_pitched": 6,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 6,
"error_prone": false
},
"games_count": 6,
"latest_game_date": "2026-09-11T00:00:00"
},
"recent_form_boost": 0.9649075535812611,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 1.62,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2447,
"prior_weight": 0.7553
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 3.0,
"predicted_ER": 4,
"predicted_H": 5,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "699044",
"player_name": "Miguel Ullola",
"position": "Starter",
"team": "HOU",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 4.0,
"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": 4.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 3.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"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": 4.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 3.0,
"predicted_R": 4.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 3.0,
"after": 3.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"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": "HOU",
"games": 152,
"wins": 76,
"losses": 76,
"win_pct": 0.5,
"runs_scored": 675.0,
"runs_allowed": 729.0,
"run_differential": -54.0,
"run_differential_per_game": -0.3553,
"avg_runs_scored": 4.4408,
"avg_runs_allowed": 4.7961,
"offense_index": 0.9861,
"defense_index": 0.939,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 5.1,
"run_differential": -18.0
},
"available": true,
"quality_score": -0.1134
},
"opponent": {
"team": "KC",
"games": 152,
"wins": 67,
"losses": 85,
"win_pct": 0.4408,
"runs_scored": 641.0,
"runs_allowed": 734.0,
"run_differential": -93.0,
"run_differential_per_game": -0.6118,
"avg_runs_scored": 4.2171,
"avg_runs_allowed": 4.8289,
"offense_index": 0.9364,
"defense_index": 0.9326,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 3.4,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.16
},
"edges": {
"quality_edge": 0.0466,
"offense_edge": -0.0139,
"opponent_offense_edge": -0.0636,
"defense_strength": -0.061,
"opponent_defense_weakness": 0.0674,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0026,
"run_prevention": 0.9936,
"strikeout": 1.0065
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "699044",
"profile": {
"available": true,
"pitcher_id": "699044",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 27.0,
"k_percent": 33.3,
"bb_percent": 3.3,
"woba": 0.261,
"xwoba": 0.276,
"sweet_spot_percent": 26.3,
"barrel_batted_rate": 15.8,
"hard_hit_percent": 36.8,
"avg_best_speed": 76.6646,
"avg_hyper_speed": 93.4329,
"whiff_percent": 28.8,
"swing_percent": 49.6
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.4715,
"command_and_miss": 1.2064,
"regression_edge": -0.4286,
"xwoba_edge": 1.0286,
"barrel_edge": -1.8889,
"hard_hit_edge": 0.1571,
"whiff_edge": 0.5429,
"bb_edge": 1.45,
"pitch_design_score": 0.1646
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "699044",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 21,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 21,
"pitch_usage": 0.0,
"release_speed": 92.78887241985068,
"release_spin_rate": 2478.703122529644,
"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": 21,
"pitch_usage": 0.0,
"release_speed": 92.78887241985068,
"release_spin_rate": 2478.703122529644,
"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.7889,
"release_spin_rate": 2478.7031,
"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.1646,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1755,
"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.2466,
"sample_weight": 0.45,
"run_prevention_factor": 0.979,
"strikeout_factor": 1.0388,
"walk_factor": 0.9478,
"homer_factor": 1.0513,
"woba_minus_xwoba": -0.015,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "699044",
"espn_id": 5124163,
"player_name": "Miguel Ullola",
"team": "HOU",
"role": "pitcher",
"espn_rank": 388,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 388,
"gp_value": 6.0,
"gp_rank": 622,
"gs_value": 1.0,
"gs_rank": 302,
"qs_value": 0.0,
"qs_rank": 214,
"era_value": 3.375,
"era_rank": null,
"w_value": 0.0,
"w_rank": 542,
"l_value": 0.0,
"l_rank": 584,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 8.0,
"ip_rank": 667,
"h_value": 5.0,
"h_rank": 732,
"er_value": 3.0,
"er_rank": 721,
"hr_value": 2.0,
"hr_rank": 537,
"bb_value": 1.0,
"bb_rank": 765,
"k_value": 10.0,
"k_rank": 607,
"k_per_9_value": 11.25,
"k_per_9_rank": 24,
"whip_value": 0.75,
"whip_rank": null,
"war_value": 0.12,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 0.0,
"factor": 0.9906,
"adjusted": 0
},
"predicted_H": {
"original": 0.0,
"factor": 0.9906,
"adjusted": 0
},
"predicted_BB": {
"original": 0.0,
"factor": 0.9765,
"adjusted": 0
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0231,
"adjusted": 0
},
"predicted_SO": {
"original": 0.0,
"factor": 1.0175,
"adjusted": 0
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 3.0,
"predicted_H": 5,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 15,
"Pitches": 57,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 6 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -7 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 5",
"detail": "Actual minus predicted hits was -5."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260917_KC@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"
}
} |
| 20260917 | 20260917_LAD@CIN | away | Justin Wrobleski | Justin Wrobleski | True | 5.0 | 3.0 | -6 | 3 | 0 | -3 | 6/0 | 1/0 | 4/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.78,
"WHIP": 1.155,
"IP": 133.1,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 5.968,
"recent_avg_IP": 4.533,
"last_start_IP": 3.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3553,
"sample_weight": 1.0,
"run_prevention_factor": 1.0302,
"strikeout_factor": 0.9634,
"walk_factor": 0.93,
"homer_factor": 1.0954,
"regression_flag": "neutral",
"k_percent": 20.1,
"bb_percent": 5.6,
"woba": 0.303,
"xwoba": 0.332,
"barrel_percent": 9.9,
"hard_hit_percent": 43.5,
"whiff_percent": 20.5
},
"espn_rank": {
"rank": 90,
"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": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "680736",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 16.1,
"ER": 13.0,
"R": 15.0,
"H": 22.0,
"BB": 7.0,
"SO": 20.0,
"HR": 5.0,
"BF": 80.0,
"Pitches": 317.0
},
"per_game": {
"IP": 3.1,
"ER": 2.6,
"R": 3.0,
"H": 4.4,
"BB": 1.4,
"SO": 4.0,
"HR": 1.0,
"BF": 16.0,
"Pitches": 63.4
},
"rates": {
"ERA": 7.1633,
"WHIP": 1.7755,
"ER_per_IP": 0.79592,
"H_per_IP": 1.34694,
"BB_per_IP": 0.42857,
"SO_per_IP": 1.22449,
"HR_per_IP": 0.30612
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.0,
"ER": 30.0,
"R": 32.0,
"H": 54.0,
"BB": 13.0,
"SO": 58.0,
"HR": 14.0,
"BF": 208.0,
"Pitches": 803.0
},
"per_game": {
"IP": 4.2,
"ER": 3.0,
"R": 3.2,
"H": 5.4,
"BB": 1.3,
"SO": 5.8,
"HR": 1.4,
"BF": 20.8,
"Pitches": 80.3
},
"rates": {
"ERA": 5.7447,
"WHIP": 1.4255,
"ER_per_IP": 0.6383,
"H_per_IP": 1.14894,
"BB_per_IP": 0.2766,
"SO_per_IP": 1.23404,
"HR_per_IP": 0.29787
}
},
"season": {
"games": 24,
"totals": {
"IP": 133.1,
"ER": 56.0,
"R": 58.0,
"H": 123.0,
"BB": 31.0,
"SO": 111.0,
"HR": 21.0,
"BF": 552.0,
"Pitches": 2034.0
},
"per_game": {
"IP": 5.2,
"ER": 2.3333,
"R": 2.4167,
"H": 5.125,
"BB": 1.2917,
"SO": 4.625,
"HR": 0.875,
"BF": 23.0,
"Pitches": 84.75
},
"rates": {
"ERA": 3.78,
"WHIP": 1.155,
"ER_per_IP": 0.42,
"H_per_IP": 0.9225,
"BB_per_IP": 0.2325,
"SO_per_IP": 0.8325,
"HR_per_IP": 0.1575
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.839,
"predicted_H": 5.142,
"predicted_BB": 1.525,
"predicted_SO": 4.953,
"predicted_HR": 1.121,
"predicted_ERA": 5.7407,
"predicted_WHIP": 1.4979
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4228,
"form_weight": 0.5772,
"form_reliability": 0.8276,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 4.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.839,
"final": 2.9071,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.142,
"final": 5.5048,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.525,
"final": 1.303,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.953,
"final": 4.55,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.121,
"final": 0.647,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.7407,
"final": 5.7407,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4979,
"final": 1.4979,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 47.0,
"ER": 30,
"H": 54,
"BB": 13,
"SO": 58,
"HR": 14,
"ERA": 5.74468085106383,
"WHIP": 1.425531914893617,
"K9": 11.106382978723405,
"HR9": 2.6808510638297873,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-12T00:00:00"
},
"recent_form_boost": 1.1502565492053614,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
}
},
{
"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": 3,
"predicted_H": 6,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "680736",
"player_name": "Justin Wrobleski",
"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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 5.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": 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.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAD",
"games": 152,
"wins": 92,
"losses": 60,
"win_pct": 0.6053,
"runs_scored": 751.0,
"runs_allowed": 578.0,
"run_differential": 173.0,
"run_differential_per_game": 1.1382,
"avg_runs_scored": 4.9408,
"avg_runs_allowed": 3.8026,
"offense_index": 1.097,
"defense_index": 1.1844,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 3.0,
"run_differential": 23.0
},
"available": true,
"quality_score": 0.2985
},
"opponent": {
"team": "CIN",
"games": 152,
"wins": 71,
"losses": 81,
"win_pct": 0.4671,
"runs_scored": 631.0,
"runs_allowed": 779.0,
"run_differential": -148.0,
"run_differential_per_game": -0.9737,
"avg_runs_scored": 4.1513,
"avg_runs_allowed": 5.125,
"offense_index": 0.9217,
"defense_index": 0.8788,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 7.7,
"run_differential": -39.0
},
"available": true,
"quality_score": -0.2169
},
"edges": {
"quality_edge": 0.5154,
"offense_edge": 0.097,
"opponent_offense_edge": -0.0783,
"defense_strength": 0.1844,
"opponent_defense_weakness": 0.1212,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0293,
"run_prevention": 0.9433,
"strikeout": 1.0217
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "680736",
"profile": {
"available": true,
"pitcher_id": "680736",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 541.0,
"k_percent": 20.1,
"bb_percent": 5.6,
"woba": 0.303,
"xwoba": 0.332,
"sweet_spot_percent": 37.3,
"barrel_batted_rate": 9.9,
"hard_hit_percent": 43.5,
"avg_best_speed": 79.2141,
"avg_hyper_speed": 94.6288,
"whiff_percent": 20.5,
"swing_percent": 50.0
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.4115,
"command_and_miss": -0.1721,
"regression_edge": -0.8286,
"xwoba_edge": -0.5714,
"barrel_edge": -0.5778,
"hard_hit_edge": -0.8,
"whiff_edge": -0.6429,
"bb_edge": 0.875,
"pitch_design_score": 0.0346
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "680736",
"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": 90.46859183729408,
"release_spin_rate": 2386.166116365442,
"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": 90.46859183729408,
"release_spin_rate": 2386.166116365442,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 90.4686,
"release_spin_rate": 2386.1661,
"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.0346,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.2474,
"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.3553,
"sample_weight": 1.0,
"run_prevention_factor": 1.0302,
"strikeout_factor": 0.9634,
"walk_factor": 0.93,
"homer_factor": 1.0954,
"woba_minus_xwoba": -0.029,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "680736",
"espn_id": 4417203,
"player_name": "Justin Wrobleski",
"team": "LAD",
"role": "pitcher",
"espn_rank": 90,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 90,
"gp_value": 24.0,
"gp_rank": 351,
"gs_value": 21.0,
"gs_rank": 98,
"qs_value": 12.0,
"qs_rank": 38,
"era_value": 3.78,
"era_rank": null,
"w_value": 11.0,
"w_rank": 26,
"l_value": 5.0,
"l_rank": 146,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 133.1,
"ip_rank": 84,
"h_value": 123.0,
"h_rank": 81,
"er_value": 56.0,
"er_rank": 94,
"hr_value": 21.0,
"hr_rank": 34,
"bb_value": 31.0,
"bb_rank": 170,
"k_value": 111.0,
"k_rank": 86,
"k_per_9_value": 7.4925003,
"k_per_9_rank": 27,
"whip_value": 1.155,
"whip_rank": null,
"war_value": 1.89,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0302,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 1.0302,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.93,
"adjusted": 2
},
"predicted_HR": {
"original": 2.0,
"factor": 1.0954,
"adjusted": 2
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9634,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 97,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -6 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 6",
"detail": "Actual minus predicted hits was -6."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
}
],
"provenance": {
"prediction": "output/games/20260917_LAD@CIN.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_LAD@CIN | home | Brady Singer | Brady Singer | True | 4.2 | 3.1 | -4 | 4 | 7 | 3 | 7/9 | 4/4 | 8/0 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.376106194690266,
"WHIP": 1.513274336283186,
"IP": 150.2,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.195,
"recent_avg_IP": 5.0,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.5686,
"sample_weight": 1.0,
"run_prevention_factor": 1.0483,
"strikeout_factor": 0.976,
"walk_factor": 0.982,
"homer_factor": 1.1106,
"regression_flag": "neutral",
"k_percent": 18.3,
"bb_percent": 8.2,
"woba": 0.364,
"xwoba": 0.353,
"barrel_percent": 10.0,
"hard_hit_percent": 42.7,
"whiff_percent": 24.5
},
"espn_rank": {
"rank": 275,
"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": "663903",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 25.0,
"R": 25.0,
"H": 33.0,
"BB": 14.0,
"SO": 21.0,
"HR": 6.0,
"BF": 126.0,
"Pitches": 473.0
},
"per_game": {
"IP": 5.0,
"ER": 5.0,
"R": 5.0,
"H": 6.6,
"BB": 2.8,
"SO": 4.2,
"HR": 1.2,
"BF": 25.2,
"Pitches": 94.6
},
"rates": {
"ERA": 9.0,
"WHIP": 1.88,
"ER_per_IP": 1.0,
"H_per_IP": 1.32,
"BB_per_IP": 0.56,
"SO_per_IP": 0.84,
"HR_per_IP": 0.24
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.0,
"ER": 41.0,
"R": 41.0,
"H": 67.0,
"BB": 25.0,
"SO": 43.0,
"HR": 9.0,
"BF": 255.0,
"Pitches": 971.0
},
"per_game": {
"IP": 5.1,
"ER": 4.1,
"R": 4.1,
"H": 6.7,
"BB": 2.5,
"SO": 4.3,
"HR": 0.9,
"BF": 25.5,
"Pitches": 97.1
},
"rates": {
"ERA": 6.8333,
"WHIP": 1.7037,
"ER_per_IP": 0.75926,
"H_per_IP": 1.24074,
"BB_per_IP": 0.46296,
"SO_per_IP": 0.7963,
"HR_per_IP": 0.16667
}
},
"season": {
"games": 29,
"totals": {
"IP": 150.2,
"ER": 90.0,
"R": 95.0,
"H": 172.0,
"BB": 56.0,
"SO": 125.0,
"HR": 30.0,
"BF": 683.0,
"Pitches": 2642.0
},
"per_game": {
"IP": 5.1,
"ER": 3.1034,
"R": 3.2759,
"H": 5.931,
"BB": 1.931,
"SO": 4.3103,
"HR": 1.0345,
"BF": 23.5517,
"Pitches": 91.1034
},
"rates": {
"ERA": 5.3761,
"WHIP": 1.5133,
"ER_per_IP": 0.59735,
"H_per_IP": 1.14159,
"BB_per_IP": 0.37168,
"SO_per_IP": 0.82965,
"HR_per_IP": 0.19912
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 4.056,
"predicted_H": 6.266,
"predicted_BB": 2.431,
"predicted_SO": 4.329,
"predicted_HR": 1.019,
"predicted_ERA": 7.0795,
"predicted_WHIP": 1.6867
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4121,
"form_weight": 0.5879,
"form_reliability": 0.8529,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 4.056,
"final": 4.4451,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 6.266,
"final": 6.1564,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 2.431,
"final": 3.0777,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 4.329,
"final": 5.842,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.019,
"final": 0.599,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 7.0795,
"final": 7.0795,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.6867,
"final": 1.6867,
"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.0,
"ER": 41,
"H": 67,
"BB": 25,
"SO": 43,
"HR": 9,
"ERA": 6.833333333333333,
"WHIP": 1.7037037037037037,
"K9": 7.166666666666667,
"HR9": 1.5,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-12T00:00:00"
},
"recent_form_boost": 1.2796842481809325,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_BB": 4.0,
"predicted_SO": 8.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 5,
"predicted_H": 6,
"predicted_BB": 4,
"predicted_SO": 8,
"predicted_HR": 0
}
},
{
"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.2,
"predicted_ER": 5,
"predicted_H": 7,
"predicted_BB": 4,
"predicted_SO": 8,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663903",
"player_name": "Brady Singer",
"position": "Starter",
"team": "CIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 5.0,
"predicted_H": 6.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": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"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": 4.0,
"predicted_ER": 5.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"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": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_H",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"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": 4.0,
"predicted_ER": 5.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 5.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 4.2,
"after": 4.2,
"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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_H",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"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": "CIN",
"games": 152,
"wins": 71,
"losses": 81,
"win_pct": 0.4671,
"runs_scored": 631.0,
"runs_allowed": 779.0,
"run_differential": -148.0,
"run_differential_per_game": -0.9737,
"avg_runs_scored": 4.1513,
"avg_runs_allowed": 5.125,
"offense_index": 0.9217,
"defense_index": 0.8788,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 7.7,
"run_differential": -39.0
},
"available": true,
"quality_score": -0.2169
},
"opponent": {
"team": "LAD",
"games": 152,
"wins": 92,
"losses": 60,
"win_pct": 0.6053,
"runs_scored": 751.0,
"runs_allowed": 578.0,
"run_differential": 173.0,
"run_differential_per_game": 1.1382,
"avg_runs_scored": 4.9408,
"avg_runs_allowed": 3.8026,
"offense_index": 1.097,
"defense_index": 1.1844,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 3.0,
"run_differential": 23.0
},
"available": true,
"quality_score": 0.2985
},
"edges": {
"quality_edge": -0.5154,
"offense_edge": -0.0783,
"opponent_offense_edge": 0.097,
"defense_strength": -0.1212,
"opponent_defense_weakness": -0.1844,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9719,
"run_prevention": 1.0534,
"strikeout": 0.9768
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663903",
"profile": {
"available": true,
"pitcher_id": "663903",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 645.0,
"k_percent": 18.3,
"bb_percent": 8.2,
"woba": 0.364,
"xwoba": 0.353,
"sweet_spot_percent": 36.4,
"barrel_batted_rate": 10.0,
"hard_hit_percent": 42.7,
"avg_best_speed": 81.1114,
"avg_hyper_speed": 94.8688,
"whiff_percent": 24.5,
"swing_percent": 44.3
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.9503,
"command_and_miss": -0.2179,
"regression_edge": 0.3143,
"xwoba_edge": -1.1714,
"barrel_edge": -0.6,
"hard_hit_edge": -0.6857,
"whiff_edge": -0.0714,
"bb_edge": 0.225,
"pitch_design_score": -0.1398
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663903",
"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": 87.35309744249595,
"release_spin_rate": 2382.291324078384,
"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": 87.35309744249595,
"release_spin_rate": 2382.291324078384,
"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.3531,
"release_spin_rate": 2382.2913,
"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.1398,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.9988,
"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.5686,
"sample_weight": 1.0,
"run_prevention_factor": 1.0483,
"strikeout_factor": 0.976,
"walk_factor": 0.982,
"homer_factor": 1.1106,
"woba_minus_xwoba": 0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "663903",
"espn_id": 41172,
"player_name": "Brady Singer",
"team": "CIN",
"role": "pitcher",
"espn_rank": 275,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 275,
"gp_value": 29.0,
"gp_rank": 268,
"gs_value": 29.0,
"gs_rank": 27,
"qs_value": 10.0,
"qs_rank": 61,
"era_value": 5.3761,
"era_rank": null,
"w_value": 6.0,
"w_rank": 112,
"l_value": 14.0,
"l_rank": 3,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 150.2,
"ip_rank": 51,
"h_value": 172.0,
"h_rank": 8,
"er_value": 90.0,
"er_rank": 4,
"hr_value": 30.0,
"hr_rank": 5,
"bb_value": 56.0,
"bb_rank": 28,
"k_value": 125.0,
"k_rank": 68,
"k_per_9_value": 7.4668145,
"k_per_9_rank": 36,
"whip_value": 1.5132,
"whip_rank": null,
"war_value": 0.42,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0483,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 1.0483,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.982,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1106,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.976,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 7,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 4,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"Pitches": 108,
"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."
}
],
"provenance": {
"prediction": "output/games/20260917_LAD@CIN.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_MIL@PIT | away | Kyle Harrison | Kyle Harrison | True | 5.0 | 1.2 | -10 | 3 | 4 | 1 | 4/4 | 4/2 | 5/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6596385542168672,
"WHIP": 1.2740963855421685,
"IP": 110.2,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 4.812,
"recent_avg_IP": 4.4,
"last_start_IP": 3.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1924,
"sample_weight": 1.0,
"run_prevention_factor": 0.9836,
"strikeout_factor": 1.0526,
"walk_factor": 0.956,
"homer_factor": 1.0171,
"regression_flag": "neutral",
"k_percent": 28.2,
"bb_percent": 6.9,
"woba": 0.33,
"xwoba": 0.303,
"barrel_percent": 8.6,
"hard_hit_percent": 38.2,
"whiff_percent": 28.0
},
"espn_rank": {
"rank": 190,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 110.2,
"season_ERA": 3.66,
"season_WHIP": 1.274,
"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": "690986",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.0,
"ER": 17.0,
"R": 24.0,
"H": 37.0,
"BB": 12.0,
"SO": 23.0,
"HR": 10.0,
"BF": 114.0,
"Pitches": 450.0
},
"per_game": {
"IP": 4.1,
"ER": 3.4,
"R": 4.8,
"H": 7.4,
"BB": 2.4,
"SO": 4.6,
"HR": 2.0,
"BF": 22.8,
"Pitches": 90.0
},
"rates": {
"ERA": 6.9545,
"WHIP": 2.2273,
"ER_per_IP": 0.77273,
"H_per_IP": 1.68182,
"BB_per_IP": 0.54545,
"SO_per_IP": 1.04545,
"HR_per_IP": 0.45455
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 45.0,
"ER": 27.0,
"R": 34.0,
"H": 54.0,
"BB": 15.0,
"SO": 54.0,
"HR": 13.0,
"BF": 204.0,
"Pitches": 838.0
},
"per_game": {
"IP": 4.2,
"ER": 2.7,
"R": 3.4,
"H": 5.4,
"BB": 1.5,
"SO": 5.4,
"HR": 1.3,
"BF": 20.4,
"Pitches": 83.8
},
"rates": {
"ERA": 5.4,
"WHIP": 1.5333,
"ER_per_IP": 0.6,
"H_per_IP": 1.2,
"BB_per_IP": 0.33333,
"SO_per_IP": 1.2,
"HR_per_IP": 0.28889
}
},
"season": {
"games": 23,
"totals": {
"IP": 110.2,
"ER": 45.0,
"R": 52.0,
"H": 108.0,
"BB": 33.0,
"SO": 134.0,
"HR": 20.0,
"BF": 471.0,
"Pitches": 1976.0
},
"per_game": {
"IP": 4.2,
"ER": 1.9565,
"R": 2.2609,
"H": 4.6957,
"BB": 1.4348,
"SO": 5.8261,
"HR": 0.8696,
"BF": 20.4783,
"Pitches": 85.913
},
"rates": {
"ERA": 3.6596,
"WHIP": 1.2741,
"ER_per_IP": 0.40663,
"H_per_IP": 0.9759,
"BB_per_IP": 0.29819,
"SO_per_IP": 1.21084,
"HR_per_IP": 0.18072
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.831,
"predicted_H": 5.989,
"predicted_BB": 1.902,
"predicted_SO": 5.053,
"predicted_HR": 1.414,
"predicted_ERA": 5.5357,
"predicted_WHIP": 1.7143
}
},
"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.0,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.831,
"final": 2.4774,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.989,
"final": 5.1428,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.902,
"final": 2.7946,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 5.053,
"final": 4.605,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.414,
"final": 1.2379,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.5357,
"final": 5.5357,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.7143,
"final": 1.7143,
"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": 38.2,
"ER": 25,
"H": 50,
"BB": 15,
"SO": 47,
"HR": 12,
"ERA": 5.818965517241379,
"WHIP": 1.6810344827586206,
"K9": 10.939655172413792,
"HR9": 2.7931034482758617,
"games_pitched": 9,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-12T00:00:00"
},
"recent_form_boost": 1.1650011383469607,
"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": 4.0,
"predicted_BB": 4.0,
"predicted_SO": 4.0,
"predicted_HR": 1.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": "690986",
"player_name": "Kyle Harrison",
"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": 4.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.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": 4.0,
"after": 5.0,
"delta": 1.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.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": 4.0,
"after": 5.0,
"delta": 1.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": "MIL",
"games": 152,
"wins": 95,
"losses": 57,
"win_pct": 0.625,
"runs_scored": 788.0,
"runs_allowed": 588.0,
"run_differential": 200.0,
"run_differential_per_game": 1.3158,
"avg_runs_scored": 5.1842,
"avg_runs_allowed": 3.8684,
"offense_index": 1.151,
"defense_index": 1.1643,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 7.3,
"avg_runs_allowed": 4.7,
"run_differential": 26.0
},
"available": true,
"quality_score": 0.3369
},
"opponent": {
"team": "PIT",
"games": 152,
"wins": 75,
"losses": 77,
"win_pct": 0.4934,
"runs_scored": 723.0,
"runs_allowed": 702.0,
"run_differential": 21.0,
"run_differential_per_game": 0.1382,
"avg_runs_scored": 4.7566,
"avg_runs_allowed": 4.6184,
"offense_index": 1.0561,
"defense_index": 0.9752,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 4.0,
"run_differential": -9.0
},
"available": true,
"quality_score": 0.0113
},
"edges": {
"quality_edge": 0.3256,
"offense_edge": 0.151,
"opponent_offense_edge": 0.0561,
"defense_strength": 0.1643,
"opponent_defense_weakness": 0.0248,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0157,
"run_prevention": 0.9763,
"strikeout": 1.0053
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "690986",
"profile": {
"available": true,
"pitcher_id": "690986",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 448.0,
"k_percent": 28.2,
"bb_percent": 6.9,
"woba": 0.33,
"xwoba": 0.303,
"sweet_spot_percent": 39.1,
"barrel_batted_rate": 8.6,
"hard_hit_percent": 38.2,
"avg_best_speed": 78.6263,
"avg_hyper_speed": 93.9762,
"whiff_percent": 28.0,
"swing_percent": 48.5
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.099,
"command_and_miss": 0.6586,
"regression_edge": 0.7714,
"xwoba_edge": 0.2571,
"barrel_edge": -0.2889,
"hard_hit_edge": -0.0429,
"whiff_edge": 0.4286,
"bb_edge": 0.55,
"pitch_design_score": -0.0067
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "690986",
"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": 89.73094925414001,
"release_spin_rate": 2195.511281181734,
"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": 89.73094925414001,
"release_spin_rate": 2195.511281181734,
"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.7309,
"release_spin_rate": 2195.5113,
"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.0067,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0477,
"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.1924,
"sample_weight": 1.0,
"run_prevention_factor": 0.9836,
"strikeout_factor": 1.0526,
"walk_factor": 0.956,
"homer_factor": 1.0171,
"woba_minus_xwoba": 0.027,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "690986",
"espn_id": 4683375,
"player_name": "Kyle Harrison",
"team": "MIL",
"role": "pitcher",
"espn_rank": 190,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 190,
"gp_value": 24.0,
"gp_rank": 351,
"gs_value": 23.0,
"gs_rank": 85,
"qs_value": 6.0,
"qs_rank": 94,
"era_value": 3.9849,
"era_rank": null,
"w_value": 10.0,
"w_rank": 35,
"l_value": 4.0,
"l_rank": 196,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 110.2,
"ip_rank": 113,
"h_value": 112.0,
"h_rank": 107,
"er_value": 49.0,
"er_rank": 119,
"hr_value": 20.0,
"hr_rank": 42,
"bb_value": 33.0,
"bb_rank": 153,
"k_value": 134.0,
"k_rank": 54,
"k_per_9_value": 10.897591,
"k_per_9_rank": 12,
"whip_value": 1.3102,
"whip_rank": null,
"war_value": 0.94,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9836,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.9836,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.956,
"adjusted": 2
},
"predicted_HR": {
"original": 2.0,
"factor": 1.0171,
"adjusted": 2
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0526,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 4,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 103,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -10 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260917_MIL@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"
}
} |
| 20260917 | 20260917_MIL@PIT | home | Wilber Dotel | Wilber Dotel | True | 5.0 | 2.0 | -9 | 1 | 1 | 0 | 4/3 | 3/1 | 6/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.3113207547169807,
"WHIP": 1.1886792452830188,
"IP": 35.1,
"games_started": null,
"games_pitched": 18,
"role_avg_IP": 2.0,
"recent_avg_IP": 2.0,
"last_start_IP": 2.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1116,
"sample_weight": 0.584,
"run_prevention_factor": 0.9905,
"strikeout_factor": 1.0053,
"walk_factor": 1.0023,
"homer_factor": 0.9759,
"regression_flag": "neutral",
"k_percent": 24.0,
"bb_percent": 9.3,
"woba": 0.297,
"xwoba": 0.299,
"barrel_percent": 3.0,
"hard_hit_percent": 46.0,
"whiff_percent": 24.6
},
"espn_rank": {
"rank": 376,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 35.1,
"season_ERA": 3.311,
"season_WHIP": 1.189,
"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": 7.154,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5886,
"prior_weight": 0.4114
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "696062",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 18,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 8.2,
"ER": 4.0,
"R": 4.0,
"H": 7.0,
"BB": 3.0,
"SO": 7.0,
"HR": 0.0,
"BF": 34.0,
"Pitches": 144.0
},
"per_game": {
"IP": 1.2,
"ER": 0.8,
"R": 0.8,
"H": 1.4,
"BB": 0.6,
"SO": 1.4,
"HR": 0.0,
"BF": 6.8,
"Pitches": 28.8
},
"rates": {
"ERA": 4.1538,
"WHIP": 1.1538,
"ER_per_IP": 0.46154,
"H_per_IP": 0.80769,
"BB_per_IP": 0.34615,
"SO_per_IP": 0.80769,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 17.0,
"ER": 7.0,
"R": 9.0,
"H": 18.0,
"BB": 5.0,
"SO": 17.0,
"HR": 0.0,
"BF": 71.0,
"Pitches": 292.0
},
"per_game": {
"IP": 1.2,
"ER": 0.7,
"R": 0.9,
"H": 1.8,
"BB": 0.5,
"SO": 1.7,
"HR": 0.0,
"BF": 7.1,
"Pitches": 29.2
},
"rates": {
"ERA": 3.7059,
"WHIP": 1.3529,
"ER_per_IP": 0.41176,
"H_per_IP": 1.05882,
"BB_per_IP": 0.29412,
"SO_per_IP": 1.0,
"HR_per_IP": 0.0
}
},
"season": {
"games": 18,
"totals": {
"IP": 35.1,
"ER": 13.0,
"R": 15.0,
"H": 29.0,
"BB": 13.0,
"SO": 36.0,
"HR": 1.0,
"BF": 144.0,
"Pitches": 568.0
},
"per_game": {
"IP": 2.0,
"ER": 0.7222,
"R": 0.8333,
"H": 1.6111,
"BB": 0.7222,
"SO": 2.0,
"HR": 0.0556,
"BF": 8.0,
"Pitches": 31.5556
},
"rates": {
"ERA": 3.3113,
"WHIP": 1.1887,
"ER_per_IP": 0.36792,
"H_per_IP": 0.82075,
"BB_per_IP": 0.36792,
"SO_per_IP": 1.01887,
"HR_per_IP": 0.0283
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.0,
"predicted_ER": 1.41,
"predicted_H": 2.862,
"predicted_BB": 1.075,
"predicted_SO": 2.848,
"predicted_HR": 0.197,
"predicted_ERA": 4.1226,
"predicted_WHIP": 1.2792
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5238,
"form_weight": 0.4762,
"form_reliability": 0.5886,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.154,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5886,
"prior_weight": 0.4114
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 3.0,
"final": 4.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.41,
"final": 1.1952,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 2.862,
"final": 3.4581,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.075,
"final": 2.0833,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 2.848,
"final": 4.4991,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.197,
"final": 0.0938,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1226,
"final": 4.1226,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2792,
"final": 1.2792,
"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": 17.0,
"ER": 7,
"H": 18,
"BB": 5,
"SO": 17,
"HR": 0,
"ERA": 3.7058823529411766,
"WHIP": 1.3529411764705883,
"K9": 9.0,
"HR9": 0.0,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.9547026659722222,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.154,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5886,
"prior_weight": 0.4114
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "696062",
"player_name": "Wilber Dotel",
"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": 3.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 1.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PIT",
"games": 152,
"wins": 75,
"losses": 77,
"win_pct": 0.4934,
"runs_scored": 723.0,
"runs_allowed": 702.0,
"run_differential": 21.0,
"run_differential_per_game": 0.1382,
"avg_runs_scored": 4.7566,
"avg_runs_allowed": 4.6184,
"offense_index": 1.0561,
"defense_index": 0.9752,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 4.0,
"run_differential": -9.0
},
"available": true,
"quality_score": 0.0113
},
"opponent": {
"team": "MIL",
"games": 152,
"wins": 95,
"losses": 57,
"win_pct": 0.625,
"runs_scored": 788.0,
"runs_allowed": 588.0,
"run_differential": 200.0,
"run_differential_per_game": 1.3158,
"avg_runs_scored": 5.1842,
"avg_runs_allowed": 3.8684,
"offense_index": 1.151,
"defense_index": 1.1643,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 7.3,
"avg_runs_allowed": 4.7,
"run_differential": 26.0
},
"available": true,
"quality_score": 0.3369
},
"edges": {
"quality_edge": -0.3256,
"offense_edge": 0.0561,
"opponent_offense_edge": 0.151,
"defense_strength": -0.0248,
"opponent_defense_weakness": -0.1643,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9802,
"run_prevention": 1.0429,
"strikeout": 0.9782
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "696062",
"profile": {
"available": true,
"pitcher_id": "696062",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 146.0,
"k_percent": 24.0,
"bb_percent": 9.3,
"woba": 0.297,
"xwoba": 0.299,
"sweet_spot_percent": 28.0,
"barrel_batted_rate": 3.0,
"hard_hit_percent": 46.0,
"avg_best_speed": 80.813,
"avg_hyper_speed": 94.6771,
"whiff_percent": 24.6,
"swing_percent": 47.7
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.2717,
"command_and_miss": 0.0986,
"regression_edge": -0.0571,
"xwoba_edge": 0.3714,
"barrel_edge": 0.9556,
"hard_hit_edge": -1.1571,
"whiff_edge": -0.0571,
"bb_edge": -0.05,
"pitch_design_score": 0.2383
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "696062",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 33,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 33,
"pitch_usage": 0.0,
"release_speed": 94.10488301935032,
"release_spin_rate": 2213.2361833085633,
"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": 33,
"pitch_usage": 0.0,
"release_speed": 94.10488301935032,
"release_spin_rate": 2213.2361833085633,
"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": 94.1049,
"release_spin_rate": 2213.2362,
"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.2383,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.7019,
"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.1116,
"sample_weight": 0.584,
"run_prevention_factor": 0.9905,
"strikeout_factor": 1.0053,
"walk_factor": 1.0023,
"homer_factor": 0.9759,
"woba_minus_xwoba": -0.002,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "696062",
"espn_id": 5332991,
"player_name": "Wilber Dotel",
"team": "PIT",
"role": "pitcher",
"espn_rank": 376,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 376,
"gp_value": 19.0,
"gp_rank": 417,
"gs_value": 1.0,
"gs_rank": 302,
"qs_value": 0.0,
"qs_rank": 214,
"era_value": 4.8396,
"era_rank": null,
"w_value": 1.0,
"w_rank": 418,
"l_value": 5.0,
"l_rank": 146,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 3.0,
"hld_rank": 212,
"ip_value": 35.1,
"ip_rank": 403,
"h_value": 34.0,
"h_rank": 391,
"er_value": 19.0,
"er_rank": 350,
"hr_value": 2.0,
"hr_rank": 537,
"bb_value": 14.0,
"bb_rank": 409,
"k_value": 36.0,
"k_rank": 387,
"k_per_9_value": 9.169811,
"k_per_9_rank": 25,
"whip_value": 1.3584,
"whip_rank": null,
"war_value": 0.14,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 7.0,
"factor": 0.9945,
"adjusted": 7
},
"predicted_H": {
"original": 9.0,
"factor": 0.9945,
"adjusted": 9
},
"predicted_BB": {
"original": 0.0,
"factor": 1.0013,
"adjusted": 0
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9859,
"adjusted": 0
},
"predicted_SO": {
"original": 2.0,
"factor": 1.0031,
"adjusted": 2
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 99,
"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": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -9 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260917_MIL@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"
}
} |
| 20260917 | 20260917_MIN@LAA | away | Taj Bradley | Taj Bradley | True | 6.0 | 7.0 | 3 | 3 | 3 | 0 | 5/5 | 1/1 | 6/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.8104838709677415,
"WHIP": 1.2459677419354838,
"IP": 165.1,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.701,
"recent_avg_IP": 5.933,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0133,
"sample_weight": 1.0,
"run_prevention_factor": 1.0011,
"strikeout_factor": 1.0423,
"walk_factor": 1.024,
"homer_factor": 1.0738,
"regression_flag": "neutral",
"k_percent": 27.3,
"bb_percent": 10.3,
"woba": 0.301,
"xwoba": 0.308,
"barrel_percent": 9.3,
"hard_hit_percent": 45.2,
"whiff_percent": 27.1
},
"espn_rank": {
"rank": 16,
"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": "671737",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.2,
"ER": 10.0,
"R": 10.0,
"H": 18.0,
"BB": 13.0,
"SO": 39.0,
"HR": 4.0,
"BF": 118.0,
"Pitches": 465.0
},
"per_game": {
"IP": 6.0,
"ER": 2.0,
"R": 2.0,
"H": 3.6,
"BB": 2.6,
"SO": 7.8,
"HR": 0.8,
"BF": 23.6,
"Pitches": 93.0
},
"rates": {
"ERA": 3.0337,
"WHIP": 1.0449,
"ER_per_IP": 0.33708,
"H_per_IP": 0.60674,
"BB_per_IP": 0.4382,
"SO_per_IP": 1.31461,
"HR_per_IP": 0.13483
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 57.2,
"ER": 24.0,
"R": 24.0,
"H": 42.0,
"BB": 29.0,
"SO": 66.0,
"HR": 7.0,
"BF": 241.0,
"Pitches": 956.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.4,
"H": 4.2,
"BB": 2.9,
"SO": 6.6,
"HR": 0.7,
"BF": 24.1,
"Pitches": 95.6
},
"rates": {
"ERA": 3.7457,
"WHIP": 1.2312,
"ER_per_IP": 0.41618,
"H_per_IP": 0.72832,
"BB_per_IP": 0.50289,
"SO_per_IP": 1.14451,
"HR_per_IP": 0.12139
}
},
"season": {
"games": 29,
"totals": {
"IP": 165.1,
"ER": 70.0,
"R": 70.0,
"H": 134.0,
"BB": 72.0,
"SO": 190.0,
"HR": 23.0,
"BF": 697.0,
"Pitches": 2795.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4138,
"R": 2.4138,
"H": 4.6207,
"BB": 2.4828,
"SO": 6.5517,
"HR": 0.7931,
"BF": 24.0345,
"Pitches": 96.3793
},
"rates": {
"ERA": 3.8105,
"WHIP": 1.246,
"ER_per_IP": 0.42339,
"H_per_IP": 0.81048,
"BB_per_IP": 0.43548,
"SO_per_IP": 1.14919,
"HR_per_IP": 0.13911
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.338,
"predicted_H": 4.278,
"predicted_BB": 2.615,
"predicted_SO": 6.896,
"predicted_HR": 0.78,
"predicted_ERA": 3.6008,
"predicted_WHIP": 1.1796
}
},
"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.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.338,
"final": 2.6108,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.278,
"final": 4.5756,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.615,
"final": 1.9494,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 6.896,
"final": 6.1146,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.78,
"final": 0.8707,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.6008,
"final": 3.6008,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1796,
"final": 1.1796,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 57.2,
"ER": 24,
"H": 42,
"BB": 29,
"SO": 66,
"HR": 7,
"ERA": 3.745664739884393,
"WHIP": 1.2312138728323698,
"K9": 10.30057803468208,
"HR9": 1.092485549132948,
"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-09-11T00:00:00"
},
"recent_form_boost": 0.9205092856461435,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 1.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": "671737",
"player_name": "Taj Bradley",
"position": "Starter",
"team": "MIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"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": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"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": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"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": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"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": "MIN",
"games": 152,
"wins": 71,
"losses": 81,
"win_pct": 0.4671,
"runs_scored": 692.0,
"runs_allowed": 765.0,
"run_differential": -73.0,
"run_differential_per_game": -0.4803,
"avg_runs_scored": 4.5526,
"avg_runs_allowed": 5.0329,
"offense_index": 1.0107,
"defense_index": 0.895,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 2.7,
"avg_runs_allowed": 6.1,
"run_differential": -34.0
},
"available": true,
"quality_score": -0.1566
},
"opponent": {
"team": "LAA",
"games": 152,
"wins": 58,
"losses": 94,
"win_pct": 0.3816,
"runs_scored": 614.0,
"runs_allowed": 692.0,
"run_differential": -78.0,
"run_differential_per_game": -0.5132,
"avg_runs_scored": 4.0395,
"avg_runs_allowed": 4.5526,
"offense_index": 0.8967,
"defense_index": 0.9894,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 3.9,
"run_differential": -2.0
},
"available": true,
"quality_score": -0.1983
},
"edges": {
"quality_edge": 0.0417,
"offense_edge": 0.0107,
"opponent_offense_edge": -0.1033,
"defense_strength": -0.105,
"opponent_defense_weakness": 0.0106,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0027,
"run_prevention": 0.9919,
"strikeout": 1.0095
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "671737",
"profile": {
"available": true,
"pitcher_id": "671737",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 674.0,
"k_percent": 27.3,
"bb_percent": 10.3,
"woba": 0.301,
"xwoba": 0.308,
"sweet_spot_percent": 39.4,
"barrel_batted_rate": 9.3,
"hard_hit_percent": 45.2,
"avg_best_speed": 80.8929,
"avg_hyper_speed": 94.9253,
"whiff_percent": 27.1,
"swing_percent": 47.0
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.1918,
"command_and_miss": 0.3857,
"regression_edge": -0.2,
"xwoba_edge": 0.1143,
"barrel_edge": -0.4444,
"hard_hit_edge": -1.0429,
"whiff_edge": 0.3,
"bb_edge": -0.3,
"pitch_design_score": 0.1723
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "671737",
"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": 92.92678562004767,
"release_spin_rate": 2179.642546804014,
"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": 92.92678562004767,
"release_spin_rate": 2179.642546804014,
"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.9268,
"release_spin_rate": 2179.6425,
"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.1723,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.2307,
"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.0133,
"sample_weight": 1.0,
"run_prevention_factor": 1.0011,
"strikeout_factor": 1.0423,
"walk_factor": 1.024,
"homer_factor": 1.0738,
"woba_minus_xwoba": -0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "671737",
"espn_id": 42480,
"player_name": "Taj Bradley",
"team": "MIN",
"role": "pitcher",
"espn_rank": 16,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 16,
"gp_value": 29.0,
"gp_rank": 268,
"gs_value": 29.0,
"gs_rank": 27,
"qs_value": 13.0,
"qs_rank": 34,
"era_value": 3.8104,
"era_rank": 28.0,
"w_value": 11.0,
"w_rank": 26,
"l_value": 6.0,
"l_rank": 116,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 165.1,
"ip_rank": 26,
"h_value": 134.0,
"h_rank": 60,
"er_value": 70.0,
"er_rank": 37,
"hr_value": 23.0,
"hr_rank": 22,
"bb_value": 72.0,
"bb_rank": 6,
"k_value": 190.0,
"k_rank": 11,
"k_per_9_value": 10.342742,
"k_per_9_rank": 11,
"whip_value": 1.2459,
"whip_rank": 33.0,
"war_value": 3.91,
"war_rank": 13.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0011,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0011,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.024,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0738,
"adjusted": 1
},
"predicted_SO": {
"original": 8.0,
"factor": 1.0423,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 26,
"Pitches": 107,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260917_MIN@LAA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_MIN@LAA | home | Walbert Ureña | Walbert Ureña | True | 5.2 | 7.0 | 4 | 1 | 0 | -1 | 3/4 | 2/0 | 5/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.8834951456310676,
"WHIP": 1.2378640776699028,
"IP": 137.1,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.427,
"recent_avg_IP": 5.933,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.3867,
"sample_weight": 1.0,
"run_prevention_factor": 0.9671,
"strikeout_factor": 1.0154,
"walk_factor": 1.05,
"homer_factor": 0.9389,
"regression_flag": "neutral",
"k_percent": 22.6,
"bb_percent": 11.6,
"woba": 0.279,
"xwoba": 0.286,
"barrel_percent": 5.6,
"hard_hit_percent": 36.4,
"whiff_percent": 27.1
},
"espn_rank": {
"rank": 25,
"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": "700712",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.2,
"ER": 12.0,
"R": 12.0,
"H": 25.0,
"BB": 10.0,
"SO": 29.0,
"HR": 3.0,
"BF": 121.0,
"Pitches": 467.0
},
"per_game": {
"IP": 6.0,
"ER": 2.4,
"R": 2.4,
"H": 5.0,
"BB": 2.0,
"SO": 5.8,
"HR": 0.6,
"BF": 24.2,
"Pitches": 93.4
},
"rates": {
"ERA": 3.6404,
"WHIP": 1.1798,
"ER_per_IP": 0.40449,
"H_per_IP": 0.8427,
"BB_per_IP": 0.33708,
"SO_per_IP": 0.97753,
"HR_per_IP": 0.10112
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 56.0,
"ER": 18.0,
"R": 18.0,
"H": 42.0,
"BB": 21.0,
"SO": 53.0,
"HR": 4.0,
"BF": 226.0,
"Pitches": 896.0
},
"per_game": {
"IP": 5.2,
"ER": 1.8,
"R": 1.8,
"H": 4.2,
"BB": 2.1,
"SO": 5.3,
"HR": 0.4,
"BF": 22.6,
"Pitches": 89.6
},
"rates": {
"ERA": 2.8929,
"WHIP": 1.125,
"ER_per_IP": 0.32143,
"H_per_IP": 0.75,
"BB_per_IP": 0.375,
"SO_per_IP": 0.94643,
"HR_per_IP": 0.07143
}
},
"season": {
"games": 27,
"totals": {
"IP": 137.1,
"ER": 44.0,
"R": 51.0,
"H": 103.0,
"BB": 67.0,
"SO": 131.0,
"HR": 9.0,
"BF": 580.0,
"Pitches": 2309.0
},
"per_game": {
"IP": 5.0,
"ER": 1.6296,
"R": 1.8889,
"H": 3.8148,
"BB": 2.4815,
"SO": 4.8519,
"HR": 0.3333,
"BF": 21.4815,
"Pitches": 85.5185
},
"rates": {
"ERA": 2.8835,
"WHIP": 1.2379,
"ER_per_IP": 0.32039,
"H_per_IP": 0.75,
"BB_per_IP": 0.48786,
"SO_per_IP": 0.95388,
"HR_per_IP": 0.06553
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.167,
"predicted_H": 4.661,
"predicted_BB": 2.155,
"predicted_SO": 5.442,
"predicted_HR": 0.532,
"predicted_ERA": 3.4329,
"predicted_WHIP": 1.1999
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.416,
"form_weight": 0.584,
"form_reliability": 0.8438,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.167,
"final": 1.6815,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.661,
"final": 3.97,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.155,
"final": 2.0905,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 5.442,
"final": 4.8421,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.532,
"final": 0.3107,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.4329,
"final": 3.4329,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1999,
"final": 1.1999,
"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.0,
"ER": 18,
"H": 42,
"BB": 21,
"SO": 53,
"HR": 4,
"ERA": 2.892857142857143,
"WHIP": 1.125,
"K9": 8.517857142857142,
"HR9": 0.6428571428571429,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-12T00:00:00"
},
"recent_form_boost": 0.8219130841597686,
"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": 3.0,
"predicted_BB": 2.0,
"predicted_SO": 4.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": 5.2,
"predicted_ER": 1,
"predicted_H": 3,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "700712",
"player_name": "Walbert Ure\u00f1a",
"position": "Starter",
"team": "LAA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.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.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.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": 1.0,
"after": 1.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.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.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.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAA",
"games": 152,
"wins": 58,
"losses": 94,
"win_pct": 0.3816,
"runs_scored": 614.0,
"runs_allowed": 692.0,
"run_differential": -78.0,
"run_differential_per_game": -0.5132,
"avg_runs_scored": 4.0395,
"avg_runs_allowed": 4.5526,
"offense_index": 0.8967,
"defense_index": 0.9894,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 3.9,
"run_differential": -2.0
},
"available": true,
"quality_score": -0.1983
},
"opponent": {
"team": "MIN",
"games": 152,
"wins": 71,
"losses": 81,
"win_pct": 0.4671,
"runs_scored": 692.0,
"runs_allowed": 765.0,
"run_differential": -73.0,
"run_differential_per_game": -0.4803,
"avg_runs_scored": 4.5526,
"avg_runs_allowed": 5.0329,
"offense_index": 1.0107,
"defense_index": 0.895,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 2.7,
"avg_runs_allowed": 6.1,
"run_differential": -34.0
},
"available": true,
"quality_score": -0.1566
},
"edges": {
"quality_edge": -0.0417,
"offense_edge": -0.1033,
"opponent_offense_edge": 0.0107,
"defense_strength": -0.0106,
"opponent_defense_weakness": 0.105,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9976,
"run_prevention": 1.0049,
"strikeout": 0.9979
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "700712",
"profile": {
"available": true,
"pitcher_id": "700712",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 549.0,
"k_percent": 22.6,
"bb_percent": 11.6,
"woba": 0.279,
"xwoba": 0.286,
"sweet_spot_percent": 26.5,
"barrel_batted_rate": 5.6,
"hard_hit_percent": 36.4,
"avg_best_speed": 75.2389,
"avg_hyper_speed": 93.7327,
"whiff_percent": 27.1,
"swing_percent": 46.3
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.6839,
"command_and_miss": 0.0186,
"regression_edge": -0.2,
"xwoba_edge": 0.7429,
"barrel_edge": 0.3778,
"hard_hit_edge": 0.2143,
"whiff_edge": 0.3,
"bb_edge": -0.625,
"pitch_design_score": 0.2353
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "700712",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 93,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 94.05192760591741,
"release_spin_rate": 2099.5035203109783,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 94.05192760591741,
"release_spin_rate": 2099.5035203109783,
"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": 94.0519,
"release_spin_rate": 2099.5035,
"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.2353,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.6807,
"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.3867,
"sample_weight": 1.0,
"run_prevention_factor": 0.9671,
"strikeout_factor": 1.0154,
"walk_factor": 1.05,
"homer_factor": 0.9389,
"woba_minus_xwoba": -0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "700712",
"espn_id": 5197476,
"player_name": "Walbert Urena",
"team": "LAA",
"role": "pitcher",
"espn_rank": 25,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 25,
"gp_value": 27.0,
"gp_rank": 305,
"gs_value": 25.0,
"gs_rank": 68,
"qs_value": 12.0,
"qs_rank": 38,
"era_value": 2.8834,
"era_rank": null,
"w_value": 9.0,
"w_rank": 45,
"l_value": 10.0,
"l_rank": 22,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 1.0,
"hld_rank": 276,
"ip_value": 137.1,
"ip_rank": 77,
"h_value": 103.0,
"h_rank": 120,
"er_value": 44.0,
"er_rank": 138,
"hr_value": 9.0,
"hr_rank": 184,
"bb_value": 67.0,
"bb_rank": 12,
"k_value": 131.0,
"k_rank": 60,
"k_per_9_value": 8.584951,
"k_per_9_rank": 21,
"whip_value": 1.2378,
"whip_rank": null,
"war_value": 3.44,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9671,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9671,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.05,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9389,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0154,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 3,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 88,
"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/20260917_MIN@LAA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_OAK@TB | away | Jeffrey Springs | Jeffrey Springs | True | 4.2 | 3.1 | -4 | 4 | 6 | 2 | 6/5 | 3/2 | 6/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.933333333333334,
"WHIP": 1.451851851851852,
"IP": 135.0,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.0,
"recent_avg_IP": 5.4,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3354,
"sample_weight": 1.0,
"run_prevention_factor": 1.0285,
"strikeout_factor": 0.9629,
"walk_factor": 1.0,
"homer_factor": 1.0404,
"regression_flag": "neutral",
"k_percent": 17.7,
"bb_percent": 9.1,
"woba": 0.365,
"xwoba": 0.337,
"barrel_percent": 9.3,
"hard_hit_percent": 35.0,
"whiff_percent": 22.8
},
"espn_rank": {
"rank": 643,
"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": "605488",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 8.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.0,
"ER": 15.0,
"R": 15.0,
"H": 26.0,
"BB": 10.0,
"SO": 17.0,
"HR": 5.0,
"BF": 115.0,
"Pitches": 439.0
},
"per_game": {
"IP": 5.1,
"ER": 3.0,
"R": 3.0,
"H": 5.2,
"BB": 2.0,
"SO": 3.4,
"HR": 1.0,
"BF": 23.0,
"Pitches": 87.8
},
"rates": {
"ERA": 5.0,
"WHIP": 1.3333,
"ER_per_IP": 0.55556,
"H_per_IP": 0.96296,
"BB_per_IP": 0.37037,
"SO_per_IP": 0.62963,
"HR_per_IP": 0.18519
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.0,
"ER": 35.0,
"R": 36.0,
"H": 54.0,
"BB": 25.0,
"SO": 27.0,
"HR": 11.0,
"BF": 215.0,
"Pitches": 823.0
},
"per_game": {
"IP": 4.2,
"ER": 3.5,
"R": 3.6,
"H": 5.4,
"BB": 2.5,
"SO": 2.7,
"HR": 1.1,
"BF": 21.5,
"Pitches": 82.3
},
"rates": {
"ERA": 6.7021,
"WHIP": 1.6809,
"ER_per_IP": 0.74468,
"H_per_IP": 1.14894,
"BB_per_IP": 0.53191,
"SO_per_IP": 0.57447,
"HR_per_IP": 0.23404
}
},
"season": {
"games": 27,
"totals": {
"IP": 135.0,
"ER": 89.0,
"R": 96.0,
"H": 142.0,
"BB": 54.0,
"SO": 105.0,
"HR": 33.0,
"BF": 594.0,
"Pitches": 2314.0
},
"per_game": {
"IP": 5.0,
"ER": 3.2963,
"R": 3.5556,
"H": 5.2593,
"BB": 2.0,
"SO": 3.8889,
"HR": 1.2222,
"BF": 22.0,
"Pitches": 85.7037
},
"rates": {
"ERA": 5.9333,
"WHIP": 1.4519,
"ER_per_IP": 0.65926,
"H_per_IP": 1.05185,
"BB_per_IP": 0.4,
"SO_per_IP": 0.77778,
"HR_per_IP": 0.24444
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 3.413,
"predicted_H": 5.688,
"predicted_BB": 2.328,
"predicted_SO": 3.773,
"predicted_HR": 1.12,
"predicted_ERA": 5.5888,
"predicted_WHIP": 1.4584
}
},
"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": 8.0,
"form": 5.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 3.413,
"final": 4.0732,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.688,
"final": 4.9858,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.328,
"final": 2.6075,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 3.773,
"final": 4.6994,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.12,
"final": 1.0701,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.5888,
"final": 5.5888,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4584,
"final": 1.4584,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 47.0,
"ER": 35,
"H": 54,
"BB": 25,
"SO": 27,
"HR": 11,
"ERA": 6.702127659574467,
"WHIP": 1.6808510638297869,
"K9": 5.170212765957446,
"HR9": 2.106382978723404,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-11T00:00:00"
},
"recent_form_boost": 1.2643522938862122,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 8.0,
"predicted_ER": 5.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 5,
"predicted_H": 4,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 1
}
},
{
"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.2,
"predicted_ER": 5,
"predicted_H": 6,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "605488",
"player_name": "Jeffrey Springs",
"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": 3.0,
"predicted_ER": 5.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 8.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": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 5.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "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": 3.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_R": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "OAK",
"games": 152,
"wins": 61,
"losses": 91,
"win_pct": 0.4013,
"runs_scored": 660.0,
"runs_allowed": 865.0,
"run_differential": -205.0,
"run_differential_per_game": -1.3487,
"avg_runs_scored": 4.3421,
"avg_runs_allowed": 5.6908,
"offense_index": 0.9641,
"defense_index": 0.7915,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.5,
"avg_runs_allowed": 5.0,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.2486
},
"opponent": {
"team": "TB",
"games": 151,
"wins": 92,
"losses": 59,
"win_pct": 0.6093,
"runs_scored": 688.0,
"runs_allowed": 617.0,
"run_differential": 71.0,
"run_differential_per_game": 0.4702,
"avg_runs_scored": 4.5563,
"avg_runs_allowed": 4.0861,
"offense_index": 1.0116,
"defense_index": 1.1023,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 2.8,
"run_differential": 25.0
},
"available": true,
"quality_score": 0.2553
},
"edges": {
"quality_edge": -0.5039,
"offense_edge": -0.0359,
"opponent_offense_edge": 0.0116,
"defense_strength": -0.2085,
"opponent_defense_weakness": -0.1023,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9731,
"run_prevention": 1.0479,
"strikeout": 0.984
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "605488",
"profile": {
"available": true,
"pitcher_id": "605488",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 563.0,
"k_percent": 17.7,
"bb_percent": 9.1,
"woba": 0.365,
"xwoba": 0.337,
"sweet_spot_percent": 35.6,
"barrel_batted_rate": 9.3,
"hard_hit_percent": 35.0,
"avg_best_speed": 76.1026,
"avg_hyper_speed": 93.4579,
"whiff_percent": 22.8,
"swing_percent": 46.2
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.5307,
"command_and_miss": -0.3864,
"regression_edge": 0.8,
"xwoba_edge": -0.7143,
"barrel_edge": -0.4444,
"hard_hit_edge": 0.4143,
"whiff_edge": -0.3143,
"bb_edge": 0.0,
"pitch_design_score": -0.2221
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "605488",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 86,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 85.88392939021944,
"release_spin_rate": 1994.099248883964,
"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": 86,
"pitch_usage": 0.0,
"release_speed": 85.88392939021944,
"release_spin_rate": 1994.099248883964,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 85.8839,
"release_spin_rate": 1994.0992,
"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.2221,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.5865,
"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.3354,
"sample_weight": 1.0,
"run_prevention_factor": 1.0285,
"strikeout_factor": 0.9629,
"walk_factor": 1.0,
"homer_factor": 1.0404,
"woba_minus_xwoba": 0.028,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "605488",
"espn_id": 35397,
"player_name": "Jeffrey Springs",
"team": "ATH",
"role": "pitcher",
"espn_rank": 643,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 643,
"gp_value": 27.0,
"gp_rank": 305,
"gs_value": 27.0,
"gs_rank": 54,
"qs_value": 5.0,
"qs_rank": 112,
"era_value": 5.9333,
"era_rank": null,
"w_value": 4.0,
"w_rank": 200,
"l_value": 13.0,
"l_rank": 8,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 135.0,
"ip_rank": 80,
"h_value": 142.0,
"h_rank": 39,
"er_value": 89.0,
"er_rank": 5,
"hr_value": 33.0,
"hr_rank": 3,
"bb_value": 54.0,
"bb_rank": 35,
"k_value": 105.0,
"k_rank": 103,
"k_per_9_value": 7.0,
"k_per_9_rank": 34,
"whip_value": 1.4518,
"whip_rank": null,
"war_value": -0.17,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0285,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0285,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0404,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9629,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 6,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 26,
"Pitches": 101,
"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/20260917_OAK@TB.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_OAK@TB | home | Drew Rasmussen | Drew Rasmussen | True | 6.0 | 5.0 | -3 | 2 | 0 | -2 | 3/4 | 1/2 | 8/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.8066528066528065,
"WHIP": 0.9168399168399168,
"IP": 160.1,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.726,
"recent_avg_IP": 6.2,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.5293,
"sample_weight": 1.0,
"run_prevention_factor": 0.955,
"strikeout_factor": 1.0177,
"walk_factor": 0.904,
"homer_factor": 0.9257,
"regression_flag": "neutral",
"k_percent": 25.6,
"bb_percent": 4.3,
"woba": 0.246,
"xwoba": 0.273,
"barrel_percent": 6.0,
"hard_hit_percent": 34.8,
"whiff_percent": 24.5
},
"espn_rank": {
"rank": 18,
"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": "656876",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.0,
"ER": 10.0,
"R": 10.0,
"H": 25.0,
"BB": 4.0,
"SO": 27.0,
"HR": 2.0,
"BF": 119.0,
"Pitches": 475.0
},
"per_game": {
"IP": 6.1,
"ER": 2.0,
"R": 2.0,
"H": 5.0,
"BB": 0.8,
"SO": 5.4,
"HR": 0.4,
"BF": 23.8,
"Pitches": 95.0
},
"rates": {
"ERA": 2.9032,
"WHIP": 0.9355,
"ER_per_IP": 0.32258,
"H_per_IP": 0.80645,
"BB_per_IP": 0.12903,
"SO_per_IP": 0.87097,
"HR_per_IP": 0.06452
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.0,
"ER": 14.0,
"R": 14.0,
"H": 43.0,
"BB": 10.0,
"SO": 62.0,
"HR": 2.0,
"BF": 233.0,
"Pitches": 926.0
},
"per_game": {
"IP": 6.0,
"ER": 1.4,
"R": 1.4,
"H": 4.3,
"BB": 1.0,
"SO": 6.2,
"HR": 0.2,
"BF": 23.3,
"Pitches": 92.6
},
"rates": {
"ERA": 2.0656,
"WHIP": 0.8689,
"ER_per_IP": 0.22951,
"H_per_IP": 0.70492,
"BB_per_IP": 0.16393,
"SO_per_IP": 1.01639,
"HR_per_IP": 0.03279
}
},
"season": {
"games": 28,
"totals": {
"IP": 160.1,
"ER": 50.0,
"R": 52.0,
"H": 120.0,
"BB": 27.0,
"SO": 160.0,
"HR": 14.0,
"BF": 625.0,
"Pitches": 2470.0
},
"per_game": {
"IP": 5.2,
"ER": 1.7857,
"R": 1.8571,
"H": 4.2857,
"BB": 0.9643,
"SO": 5.7143,
"HR": 0.5,
"BF": 22.3214,
"Pitches": 88.2143
},
"rates": {
"ERA": 2.8067,
"WHIP": 0.9168,
"ER_per_IP": 0.31185,
"H_per_IP": 0.74844,
"BB_per_IP": 0.1684,
"SO_per_IP": 0.99792,
"HR_per_IP": 0.08732
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.947,
"predicted_H": 4.809,
"predicted_BB": 1.112,
"predicted_SO": 5.741,
"predicted_HR": 0.434,
"predicted_ERA": 2.8865,
"predicted_WHIP": 0.9752
}
},
"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": 1.947,
"final": 1.9689,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.809,
"final": 4.0601,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.112,
"final": 1.0656,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 5.741,
"final": 6.6762,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.434,
"final": 0.6683,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.8865,
"final": 2.8865,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.9752,
"final": 0.9752,
"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": 14,
"H": 43,
"BB": 10,
"SO": 62,
"HR": 2,
"ERA": 2.0655737704918034,
"WHIP": 0.8688524590163934,
"K9": 9.147540983606557,
"HR9": 0.29508196721311475,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-11T00:00:00"
},
"recent_form_boost": 0.7224400162440778,
"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": 3.0,
"predicted_BB": 1.0,
"predicted_SO": 8.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": 6.0,
"predicted_ER": 2,
"predicted_H": 3,
"predicted_BB": 1,
"predicted_SO": 8,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "656876",
"player_name": "Drew Rasmussen",
"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": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": "TB",
"games": 151,
"wins": 92,
"losses": 59,
"win_pct": 0.6093,
"runs_scored": 688.0,
"runs_allowed": 617.0,
"run_differential": 71.0,
"run_differential_per_game": 0.4702,
"avg_runs_scored": 4.5563,
"avg_runs_allowed": 4.0861,
"offense_index": 1.0116,
"defense_index": 1.1023,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 2.8,
"run_differential": 25.0
},
"available": true,
"quality_score": 0.2553
},
"opponent": {
"team": "OAK",
"games": 152,
"wins": 61,
"losses": 91,
"win_pct": 0.4013,
"runs_scored": 660.0,
"runs_allowed": 865.0,
"run_differential": -205.0,
"run_differential_per_game": -1.3487,
"avg_runs_scored": 4.3421,
"avg_runs_allowed": 5.6908,
"offense_index": 0.9641,
"defense_index": 0.7915,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.5,
"avg_runs_allowed": 5.0,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.2486
},
"edges": {
"quality_edge": 0.5039,
"offense_edge": 0.0116,
"opponent_offense_edge": -0.0359,
"defense_strength": 0.1023,
"opponent_defense_weakness": 0.2085,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0247,
"run_prevention": 0.9588,
"strikeout": 1.018
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "656876",
"profile": {
"available": true,
"pitcher_id": "656876",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 598.0,
"k_percent": 25.6,
"bb_percent": 4.3,
"woba": 0.246,
"xwoba": 0.273,
"sweet_spot_percent": 32.9,
"barrel_batted_rate": 6.0,
"hard_hit_percent": 34.8,
"avg_best_speed": 77.5668,
"avg_hyper_speed": 93.6703,
"whiff_percent": 24.5,
"swing_percent": 50.4
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.8555,
"command_and_miss": 0.4464,
"regression_edge": -0.7714,
"xwoba_edge": 1.1143,
"barrel_edge": 0.2889,
"hard_hit_edge": 0.4429,
"whiff_edge": -0.0714,
"bb_edge": 1.2,
"pitch_design_score": 0.1406
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "656876",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 93,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 92.35994207532833,
"release_spin_rate": 2360.869278887561,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 92.35994207532833,
"release_spin_rate": 2360.869278887561,
"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.3599,
"release_spin_rate": 2360.8693,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1406,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.0039,
"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.5293,
"sample_weight": 1.0,
"run_prevention_factor": 0.955,
"strikeout_factor": 1.0177,
"walk_factor": 0.904,
"homer_factor": 0.9257,
"woba_minus_xwoba": -0.027,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "656876",
"espn_id": 42584,
"player_name": "Drew Rasmussen",
"team": "TB",
"role": "pitcher",
"espn_rank": 18,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 18,
"gp_value": 28.0,
"gp_rank": 292,
"gs_value": 28.0,
"gs_rank": 40,
"qs_value": 17.0,
"qs_rank": 13,
"era_value": 2.8066,
"era_rank": 9.0,
"w_value": 14.0,
"w_rank": 8,
"l_value": 5.0,
"l_rank": 146,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 160.1,
"ip_rank": 37,
"h_value": 120.0,
"h_rank": 89,
"er_value": 50.0,
"er_rank": 111,
"hr_value": 14.0,
"hr_rank": 110,
"bb_value": 27.0,
"bb_rank": 204,
"k_value": 160.0,
"k_rank": 29,
"k_per_9_value": 8.981289,
"k_per_9_rank": 21,
"whip_value": 0.9168,
"whip_rank": 4.0,
"war_value": 3.84,
"war_rank": 15.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.955,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.955,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.904,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9257,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0177,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 8,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"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": "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/20260917_OAK@TB.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_PHI@NYM | away | Aaron Nola | Aaron Nola | True | 6.0 | 7.0 | 3 | 4 | 0 | -4 | 6/3 | 1/3 | 3/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.68595041322314,
"WHIP": 1.3698347107438016,
"IP": 161.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.378,
"recent_avg_IP": 6.267,
"last_start_IP": 6.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0331,
"sample_weight": 1.0,
"run_prevention_factor": 0.9972,
"strikeout_factor": 1.024,
"walk_factor": 0.978,
"homer_factor": 1.0508,
"regression_flag": "positive_pitcher_regression",
"k_percent": 23.9,
"bb_percent": 8.0,
"woba": 0.347,
"xwoba": 0.311,
"barrel_percent": 9.4,
"hard_hit_percent": 40.4,
"whiff_percent": 27.3
},
"espn_rank": {
"rank": 48,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "605400",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.1,
"ER": 7.0,
"R": 7.0,
"H": 23.0,
"BB": 9.0,
"SO": 27.0,
"HR": 4.0,
"BF": 123.0,
"Pitches": 490.0
},
"per_game": {
"IP": 6.1,
"ER": 1.4,
"R": 1.4,
"H": 4.6,
"BB": 1.8,
"SO": 5.4,
"HR": 0.8,
"BF": 24.6,
"Pitches": 98.0
},
"rates": {
"ERA": 2.0106,
"WHIP": 1.0213,
"ER_per_IP": 0.2234,
"H_per_IP": 0.73404,
"BB_per_IP": 0.28723,
"SO_per_IP": 0.8617,
"HR_per_IP": 0.12766
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 58.1,
"ER": 19.0,
"R": 19.0,
"H": 52.0,
"BB": 20.0,
"SO": 57.0,
"HR": 11.0,
"BF": 238.0,
"Pitches": 959.0
},
"per_game": {
"IP": 6.0,
"ER": 1.9,
"R": 1.9,
"H": 5.2,
"BB": 2.0,
"SO": 5.7,
"HR": 1.1,
"BF": 23.8,
"Pitches": 95.9
},
"rates": {
"ERA": 2.9314,
"WHIP": 1.2343,
"ER_per_IP": 0.32571,
"H_per_IP": 0.89143,
"BB_per_IP": 0.34286,
"SO_per_IP": 0.97714,
"HR_per_IP": 0.18857
}
},
"season": {
"games": 30,
"totals": {
"IP": 161.1,
"ER": 84.0,
"R": 86.0,
"H": 166.0,
"BB": 55.0,
"SO": 165.0,
"HR": 34.0,
"BF": 690.0,
"Pitches": 2756.0
},
"per_game": {
"IP": 5.1,
"ER": 2.8,
"R": 2.8667,
"H": 5.5333,
"BB": 1.8333,
"SO": 5.5,
"HR": 1.1333,
"BF": 23.0,
"Pitches": 91.8667
},
"rates": {
"ERA": 4.686,
"WHIP": 1.3698,
"ER_per_IP": 0.52066,
"H_per_IP": 1.02893,
"BB_per_IP": 0.34091,
"SO_per_IP": 1.02273,
"HR_per_IP": 0.21074
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.076,
"predicted_H": 5.21,
"predicted_BB": 1.957,
"predicted_SO": 5.622,
"predicted_HR": 0.981,
"predicted_ERA": 3.1074,
"predicted_WHIP": 1.1918
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.076,
"final": 2.8656,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.21,
"final": 5.5342,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.957,
"final": 1.5643,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 5.622,
"final": 4.1356,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.981,
"final": 0.9888,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.1074,
"final": 3.1074,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1918,
"final": 1.1918,
"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": 19,
"H": 52,
"BB": 20,
"SO": 57,
"HR": 11,
"ERA": 2.9314285714285715,
"WHIP": 1.2342857142857144,
"K9": 8.794285714285715,
"HR9": 1.6971428571428573,
"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-09-11T00:00:00"
},
"recent_form_boost": 0.8289845127311972,
"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": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 2.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "605400",
"player_name": "Aaron Nola",
"position": "Starter",
"team": "PHI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 4.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"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": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"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": "PHI",
"games": 152,
"wins": 84,
"losses": 68,
"win_pct": 0.5526,
"runs_scored": 681.0,
"runs_allowed": 650.0,
"run_differential": 31.0,
"run_differential_per_game": 0.2039,
"avg_runs_scored": 4.4803,
"avg_runs_allowed": 4.2763,
"offense_index": 0.9948,
"defense_index": 1.0531,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.8,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.0346
},
"opponent": {
"team": "NYM",
"games": 152,
"wins": 69,
"losses": 83,
"win_pct": 0.4539,
"runs_scored": 650.0,
"runs_allowed": 693.0,
"run_differential": -43.0,
"run_differential_per_game": -0.2829,
"avg_runs_scored": 4.2763,
"avg_runs_allowed": 4.5592,
"offense_index": 0.9495,
"defense_index": 0.9878,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.8,
"avg_runs_allowed": 5.1,
"run_differential": 7.0
},
"available": true,
"quality_score": -0.0737
},
"edges": {
"quality_edge": 0.1083,
"offense_edge": -0.0052,
"opponent_offense_edge": -0.0505,
"defense_strength": 0.0531,
"opponent_defense_weakness": 0.0122,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0079,
"run_prevention": 0.9812,
"strikeout": 1.0073
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "605400",
"profile": {
"available": true,
"pitcher_id": "605400",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 636.0,
"k_percent": 23.9,
"bb_percent": 8.0,
"woba": 0.347,
"xwoba": 0.311,
"sweet_spot_percent": 35.0,
"barrel_batted_rate": 9.4,
"hard_hit_percent": 40.4,
"avg_best_speed": 76.8683,
"avg_hyper_speed": 94.2748,
"whiff_percent": 27.3,
"swing_percent": 46.4
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2291,
"command_and_miss": 0.2921,
"regression_edge": 1.0286,
"xwoba_edge": 0.0286,
"barrel_edge": -0.4667,
"hard_hit_edge": -0.3571,
"whiff_edge": 0.3286,
"bb_edge": 0.275,
"pitch_design_score": -0.2173
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "605400",
"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": 85.97025411000989,
"release_spin_rate": 2296.978491607639,
"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": 85.97025411000989,
"release_spin_rate": 2296.978491607639,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 85.9703,
"release_spin_rate": 2296.9785,
"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.2173,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.5519,
"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.0331,
"sample_weight": 1.0,
"run_prevention_factor": 0.9972,
"strikeout_factor": 1.024,
"walk_factor": 0.978,
"homer_factor": 1.0508,
"woba_minus_xwoba": 0.036,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "605400",
"espn_id": 33709,
"player_name": "Aaron Nola",
"team": "PHI",
"role": "pitcher",
"espn_rank": 48,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 48,
"gp_value": 30.0,
"gp_rank": 240,
"gs_value": 30.0,
"gs_rank": 9,
"qs_value": 11.0,
"qs_rank": 48,
"era_value": 4.6859,
"era_rank": 44.0,
"w_value": 6.0,
"w_rank": 112,
"l_value": 10.0,
"l_rank": 22,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 161.1,
"ip_rank": 34,
"h_value": 166.0,
"h_rank": 10,
"er_value": 84.0,
"er_rank": 12,
"hr_value": 34.0,
"hr_rank": 1,
"bb_value": 55.0,
"bb_rank": 32,
"k_value": 165.0,
"k_rank": 25,
"k_per_9_value": 9.204545,
"k_per_9_rank": 19,
"whip_value": 1.3698,
"whip_rank": 42.0,
"war_value": 2.66,
"war_rank": 26.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9972,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9972,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.978,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0508,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.024,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 6,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 25,
"Pitches": 110,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 4",
"detail": "Actual minus predicted earned runs was -4; this is the primary run-prevention error."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 4 ER."
},
{
"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/20260917_PHI@NYM.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_PHI@NYM | home | Nolan McLean | Nolan McLean | True | 6.0 | 6.0 | 0 | 2 | 1 | -1 | 4/7 | 3/3 | 6/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.24,
"WHIP": 1.1760000000000002,
"IP": 166.2,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.747,
"recent_avg_IP": 6.0,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2306,
"sample_weight": 1.0,
"run_prevention_factor": 0.9804,
"strikeout_factor": 1.0217,
"walk_factor": 1.008,
"homer_factor": 0.9683,
"regression_flag": "neutral",
"k_percent": 26.5,
"bb_percent": 9.5,
"woba": 0.291,
"xwoba": 0.298,
"barrel_percent": 6.8,
"hard_hit_percent": 36.0,
"whiff_percent": 24.3
},
"espn_rank": {
"rank": 50,
"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": "690997",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 8.0,
"R": 9.0,
"H": 25.0,
"BB": 16.0,
"SO": 25.0,
"HR": 2.0,
"BF": 127.0,
"Pitches": 494.0
},
"per_game": {
"IP": 6.0,
"ER": 1.6,
"R": 1.8,
"H": 5.0,
"BB": 3.2,
"SO": 5.0,
"HR": 0.4,
"BF": 25.4,
"Pitches": 98.8
},
"rates": {
"ERA": 2.4,
"WHIP": 1.3667,
"ER_per_IP": 0.26667,
"H_per_IP": 0.83333,
"BB_per_IP": 0.53333,
"SO_per_IP": 0.83333,
"HR_per_IP": 0.06667
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 59.1,
"ER": 18.0,
"R": 21.0,
"H": 49.0,
"BB": 27.0,
"SO": 59.0,
"HR": 7.0,
"BF": 247.0,
"Pitches": 961.0
},
"per_game": {
"IP": 6.0,
"ER": 1.8,
"R": 2.1,
"H": 4.9,
"BB": 2.7,
"SO": 5.9,
"HR": 0.7,
"BF": 24.7,
"Pitches": 96.1
},
"rates": {
"ERA": 2.7303,
"WHIP": 1.2809,
"ER_per_IP": 0.30337,
"H_per_IP": 0.82584,
"BB_per_IP": 0.45506,
"SO_per_IP": 0.99438,
"HR_per_IP": 0.11798
}
},
"season": {
"games": 29,
"totals": {
"IP": 166.2,
"ER": 60.0,
"R": 72.0,
"H": 130.0,
"BB": 66.0,
"SO": 184.0,
"HR": 17.0,
"BF": 695.0,
"Pitches": 2750.0
},
"per_game": {
"IP": 5.2,
"ER": 2.069,
"R": 2.4828,
"H": 4.4828,
"BB": 2.2759,
"SO": 6.3448,
"HR": 0.5862,
"BF": 23.9655,
"Pitches": 94.8276
},
"rates": {
"ERA": 3.24,
"WHIP": 1.176,
"ER_per_IP": 0.36,
"H_per_IP": 0.78,
"BB_per_IP": 0.396,
"SO_per_IP": 1.104,
"HR_per_IP": 0.102
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.953,
"predicted_H": 5.01,
"predicted_BB": 2.752,
"predicted_SO": 5.604,
"predicted_HR": 0.594,
"predicted_ERA": 2.9572,
"predicted_WHIP": 1.306
}
},
"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.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.953,
"final": 1.9724,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.01,
"final": 4.5937,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.752,
"final": 2.8542,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 5.604,
"final": 5.7672,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.594,
"final": 0.3492,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.9572,
"final": 2.9572,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.306,
"final": 1.306,
"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": 59.1,
"ER": 18,
"H": 49,
"BB": 27,
"SO": 59,
"HR": 7,
"ERA": 2.7303370786516856,
"WHIP": 1.2808988764044944,
"K9": 8.949438202247192,
"HR9": 1.0617977528089888,
"games_pitched": 10,
"quality_starts": 8,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-11T00:00:00"
},
"recent_form_boost": 0.8075270488467672,
"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": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "690997",
"player_name": "Nolan McLean",
"position": "Starter",
"team": "NYM",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.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": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYM",
"games": 152,
"wins": 69,
"losses": 83,
"win_pct": 0.4539,
"runs_scored": 650.0,
"runs_allowed": 693.0,
"run_differential": -43.0,
"run_differential_per_game": -0.2829,
"avg_runs_scored": 4.2763,
"avg_runs_allowed": 4.5592,
"offense_index": 0.9495,
"defense_index": 0.9878,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.8,
"avg_runs_allowed": 5.1,
"run_differential": 7.0
},
"available": true,
"quality_score": -0.0737
},
"opponent": {
"team": "PHI",
"games": 152,
"wins": 84,
"losses": 68,
"win_pct": 0.5526,
"runs_scored": 681.0,
"runs_allowed": 650.0,
"run_differential": 31.0,
"run_differential_per_game": 0.2039,
"avg_runs_scored": 4.4803,
"avg_runs_allowed": 4.2763,
"offense_index": 0.9948,
"defense_index": 1.0531,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.8,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.0346
},
"edges": {
"quality_edge": -0.1083,
"offense_edge": -0.0505,
"opponent_offense_edge": -0.0052,
"defense_strength": -0.0122,
"opponent_defense_weakness": -0.0531,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9955,
"run_prevention": 1.0058,
"strikeout": 0.9972
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "690997",
"profile": {
"available": true,
"pitcher_id": "690997",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 666.0,
"k_percent": 26.5,
"bb_percent": 9.5,
"woba": 0.291,
"xwoba": 0.298,
"sweet_spot_percent": 34.0,
"barrel_batted_rate": 6.8,
"hard_hit_percent": 36.0,
"avg_best_speed": 76.7356,
"avg_hyper_speed": 93.6272,
"whiff_percent": 24.3,
"swing_percent": 44.1
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3288,
"command_and_miss": 0.2343,
"regression_edge": -0.2,
"xwoba_edge": 0.4,
"barrel_edge": 0.1111,
"hard_hit_edge": 0.2714,
"whiff_edge": -0.1,
"bb_edge": -0.1,
"pitch_design_score": 0.0696
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "690997",
"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": 91.09291107173905,
"release_spin_rate": 2504.008206803709,
"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": 91.09291107173905,
"release_spin_rate": 2504.008206803709,
"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.0929,
"release_spin_rate": 2504.0082,
"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.0696,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.4971,
"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.2306,
"sample_weight": 1.0,
"run_prevention_factor": 0.9804,
"strikeout_factor": 1.0217,
"walk_factor": 1.008,
"homer_factor": 0.9683,
"woba_minus_xwoba": -0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "690997",
"espn_id": 4433874,
"player_name": "Nolan McLean",
"team": "NYM",
"role": "pitcher",
"espn_rank": 50,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 50,
"gp_value": 29.0,
"gp_rank": 268,
"gs_value": 29.0,
"gs_rank": 27,
"qs_value": 18.0,
"qs_rank": 7,
"era_value": 3.24,
"era_rank": 15.0,
"w_value": 11.0,
"w_rank": 26,
"l_value": 9.0,
"l_rank": 36,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 166.2,
"ip_rank": 20,
"h_value": 130.0,
"h_rank": 67,
"er_value": 60.0,
"er_rank": 71,
"hr_value": 17.0,
"hr_rank": 79,
"bb_value": 66.0,
"bb_rank": 13,
"k_value": 184.0,
"k_rank": 15,
"k_per_9_value": 9.936,
"k_per_9_rank": 20,
"whip_value": 1.176,
"whip_rank": 23.0,
"war_value": 2.6,
"war_rank": 27.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9804,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9804,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 1.008,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9683,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0217,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"Pitches": 112,
"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/20260917_PHI@NYM.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_SD@COL | away | Michael King | Michael King | True | 6.1 | 6.0 | -1 | 3 | 2 | -1 | 6/7 | 1/2 | 6/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.0342857142857143,
"WHIP": 1.1485714285714286,
"IP": 175.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.833,
"recent_avg_IP": 6.533,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0944,
"sample_weight": 1.0,
"run_prevention_factor": 1.008,
"strikeout_factor": 0.9914,
"walk_factor": 1.004,
"homer_factor": 1.0022,
"regression_flag": "negative_pitcher_regression",
"k_percent": 20.8,
"bb_percent": 9.3,
"woba": 0.291,
"xwoba": 0.323,
"barrel_percent": 8.5,
"hard_hit_percent": 32.9,
"whiff_percent": 24.7
},
"espn_rank": {
"rank": 13,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "650633",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 32.2,
"ER": 5.0,
"R": 5.0,
"H": 22.0,
"BB": 10.0,
"SO": 24.0,
"HR": 3.0,
"BF": 126.0,
"Pitches": 486.0
},
"per_game": {
"IP": 6.2,
"ER": 1.0,
"R": 1.0,
"H": 4.4,
"BB": 2.0,
"SO": 4.8,
"HR": 0.6,
"BF": 25.2,
"Pitches": 97.2
},
"rates": {
"ERA": 1.3776,
"WHIP": 0.9796,
"ER_per_IP": 0.15306,
"H_per_IP": 0.67347,
"BB_per_IP": 0.30612,
"SO_per_IP": 0.73469,
"HR_per_IP": 0.09184
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.2,
"ER": 17.0,
"R": 18.0,
"H": 49.0,
"BB": 21.0,
"SO": 52.0,
"HR": 9.0,
"BF": 247.0,
"Pitches": 968.0
},
"per_game": {
"IP": 6.0,
"ER": 1.7,
"R": 1.8,
"H": 4.9,
"BB": 2.1,
"SO": 5.2,
"HR": 0.9,
"BF": 24.7,
"Pitches": 96.8
},
"rates": {
"ERA": 2.4811,
"WHIP": 1.1351,
"ER_per_IP": 0.27568,
"H_per_IP": 0.79459,
"BB_per_IP": 0.34054,
"SO_per_IP": 0.84324,
"HR_per_IP": 0.14595
}
},
"season": {
"games": 30,
"totals": {
"IP": 175.0,
"ER": 59.0,
"R": 61.0,
"H": 135.0,
"BB": 66.0,
"SO": 148.0,
"HR": 20.0,
"BF": 711.0,
"Pitches": 2796.0
},
"per_game": {
"IP": 6.0,
"ER": 1.9667,
"R": 2.0333,
"H": 4.5,
"BB": 2.2,
"SO": 4.9333,
"HR": 0.6667,
"BF": 23.7,
"Pitches": 93.2
},
"rates": {
"ERA": 3.0343,
"WHIP": 1.1486,
"ER_per_IP": 0.33714,
"H_per_IP": 0.77143,
"BB_per_IP": 0.37714,
"SO_per_IP": 0.84571,
"HR_per_IP": 0.11429
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 1.713,
"predicted_H": 4.853,
"predicted_BB": 2.133,
"predicted_SO": 5.14,
"predicted_HR": 0.756,
"predicted_ERA": 2.445,
"predicted_WHIP": 1.108
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 6.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.713,
"final": 2.2412,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.853,
"final": 5.3237,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.133,
"final": 1.668,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 5.14,
"final": 5.4929,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.756,
"final": 0.4458,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.445,
"final": 2.445,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.108,
"final": 1.108,
"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.2,
"ER": 17,
"H": 49,
"BB": 21,
"SO": 52,
"HR": 9,
"ERA": 2.481081081081081,
"WHIP": 1.135135135135135,
"K9": 7.589189189189189,
"HR9": 1.3135135135135134,
"games_pitched": 10,
"quality_starts": 8,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-12T00:00:00"
},
"recent_form_boost": 0.7758416555883401,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.1,
"predicted_ER": 3,
"predicted_H": 6,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "650633",
"player_name": "Michael King",
"position": "Starter",
"team": "SD",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.3333,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"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": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"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": 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": 6.1,
"after": 6.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"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": 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": "SD",
"games": 152,
"wins": 83,
"losses": 69,
"win_pct": 0.5461,
"runs_scored": 659.0,
"runs_allowed": 636.0,
"run_differential": 23.0,
"run_differential_per_game": 0.1513,
"avg_runs_scored": 4.3355,
"avg_runs_allowed": 4.1842,
"offense_index": 0.9624,
"defense_index": 1.0767,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 9,
"losses": 1,
"win_pct": 0.9,
"avg_runs_scored": 6.1,
"avg_runs_allowed": 4.5,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.1977
},
"opponent": {
"team": "COL",
"games": 152,
"wins": 56,
"losses": 96,
"win_pct": 0.3684,
"runs_scored": 715.0,
"runs_allowed": 885.0,
"run_differential": -170.0,
"run_differential_per_game": -1.1184,
"avg_runs_scored": 4.7039,
"avg_runs_allowed": 5.8224,
"offense_index": 1.0442,
"defense_index": 0.7737,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 1,
"losses": 9,
"win_pct": 0.1,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 7.6,
"run_differential": -32.0
},
"available": true,
"quality_score": -0.3884
},
"edges": {
"quality_edge": 0.5861,
"offense_edge": -0.0376,
"opponent_offense_edge": 0.0442,
"defense_strength": 0.0767,
"opponent_defense_weakness": 0.2263,
"recent_win_pct_edge": 0.8
},
"player_factors": {
"ip": 1.024,
"run_prevention": 0.9701,
"strikeout": 1.014
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "650633",
"profile": {
"available": true,
"pitcher_id": "650633",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 680.0,
"k_percent": 20.8,
"bb_percent": 9.3,
"woba": 0.291,
"xwoba": 0.323,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 8.5,
"hard_hit_percent": 32.9,
"avg_best_speed": 75.7799,
"avg_hyper_speed": 93.1286,
"whiff_percent": 24.7,
"swing_percent": 46.4
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.049,
"command_and_miss": -0.1021,
"regression_edge": -0.9143,
"xwoba_edge": -0.3143,
"barrel_edge": -0.2667,
"hard_hit_edge": 0.7143,
"whiff_edge": -0.0429,
"bb_edge": -0.05,
"pitch_design_score": -0.0486
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "650633",
"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.98268042354384,
"release_spin_rate": 2287.938744232883,
"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.98268042354384,
"release_spin_rate": 2287.938744232883,
"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.9827,
"release_spin_rate": 2287.9387,
"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.0486,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.347,
"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.0944,
"sample_weight": 1.0,
"run_prevention_factor": 1.008,
"strikeout_factor": 0.9914,
"walk_factor": 1.004,
"homer_factor": 1.0022,
"woba_minus_xwoba": -0.032,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "650633",
"espn_id": 40429,
"player_name": "Michael King",
"team": "SD",
"role": "pitcher",
"espn_rank": 13,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 13,
"gp_value": 30.0,
"gp_rank": 240,
"gs_value": 30.0,
"gs_rank": 9,
"qs_value": 17.0,
"qs_rank": 13,
"era_value": 3.0342,
"era_rank": 13.0,
"w_value": 11.0,
"w_rank": 26,
"l_value": 9.0,
"l_rank": 36,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 175.0,
"ip_rank": 11,
"h_value": 135.0,
"h_rank": 56,
"er_value": 59.0,
"er_rank": 79,
"hr_value": 20.0,
"hr_rank": 42,
"bb_value": 66.0,
"bb_rank": 13,
"k_value": 148.0,
"k_rank": 38,
"k_per_9_value": 7.6114283,
"k_per_9_rank": 93,
"whip_value": 1.1485,
"whip_rank": 19.0,
"war_value": 4.13,
"war_rank": 10.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 1.008,
"adjusted": 1
},
"predicted_H": {
"original": 5.0,
"factor": 1.008,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.004,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0022,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9914,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 26,
"Pitches": 114,
"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/20260917_SD@COL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260917 | 20260917_SD@COL | home | Tanner Gordon | Tanner Gordon | True | 5.0 | 3.0 | -6 | 6 | 7 | 1 | 5/10 | 1/2 | 5/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.5479452054794525,
"WHIP": 1.4794520547945207,
"IP": 97.1,
"games_started": null,
"games_pitched": 22,
"role_avg_IP": 4.9,
"recent_avg_IP": 5.2,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.295,
"sample_weight": 1.0,
"run_prevention_factor": 1.0251,
"strikeout_factor": 0.9651,
"walk_factor": 0.902,
"homer_factor": 1.0968,
"regression_flag": "positive_pitcher_regression",
"k_percent": 18.9,
"bb_percent": 4.2,
"woba": 0.377,
"xwoba": 0.328,
"barrel_percent": 10.4,
"hard_hit_percent": 42.8,
"whiff_percent": 22.0
},
"espn_rank": {
"rank": 213,
"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": 22.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8148,
"prior_weight": 0.1852
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "685299",
"report_date": "20260917",
"season_year": 2026,
"rows_used": 22,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 16.0,
"R": 16.0,
"H": 36.0,
"BB": 5.0,
"SO": 19.0,
"HR": 3.0,
"BF": 116.0,
"Pitches": 399.0
},
"per_game": {
"IP": 5.1,
"ER": 3.2,
"R": 3.2,
"H": 7.2,
"BB": 1.0,
"SO": 3.8,
"HR": 0.6,
"BF": 23.2,
"Pitches": 79.8
},
"rates": {
"ERA": 5.5385,
"WHIP": 1.5769,
"ER_per_IP": 0.61538,
"H_per_IP": 1.38462,
"BB_per_IP": 0.19231,
"SO_per_IP": 0.73077,
"HR_per_IP": 0.11538
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.0,
"ER": 24.0,
"R": 26.0,
"H": 56.0,
"BB": 7.0,
"SO": 34.0,
"HR": 6.0,
"BF": 200.0,
"Pitches": 669.0
},
"per_game": {
"IP": 4.2,
"ER": 2.4,
"R": 2.6,
"H": 5.6,
"BB": 0.7,
"SO": 3.4,
"HR": 0.6,
"BF": 20.0,
"Pitches": 66.9
},
"rates": {
"ERA": 4.5957,
"WHIP": 1.3404,
"ER_per_IP": 0.51064,
"H_per_IP": 1.19149,
"BB_per_IP": 0.14894,
"SO_per_IP": 0.7234,
"HR_per_IP": 0.12766
}
},
"season": {
"games": 22,
"totals": {
"IP": 97.1,
"ER": 60.0,
"R": 62.0,
"H": 126.0,
"BB": 18.0,
"SO": 81.0,
"HR": 18.0,
"BF": 428.0,
"Pitches": 1510.0
},
"per_game": {
"IP": 4.1,
"ER": 2.7273,
"R": 2.8182,
"H": 5.7273,
"BB": 0.8182,
"SO": 3.6818,
"HR": 0.8182,
"BF": 19.4545,
"Pitches": 68.6364
},
"rates": {
"ERA": 5.5479,
"WHIP": 1.4795,
"ER_per_IP": 0.61644,
"H_per_IP": 1.29452,
"BB_per_IP": 0.18493,
"SO_per_IP": 0.83219,
"HR_per_IP": 0.18493
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.78,
"predicted_H": 6.095,
"predicted_BB": 1.044,
"predicted_SO": 3.853,
"predicted_HR": 0.67,
"predicted_ERA": 5.0868,
"predicted_WHIP": 1.4514
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4282,
"form_weight": 0.5718,
"form_reliability": 0.8148,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 22.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8148,
"prior_weight": 0.1852
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 6.0,
"form": 2.78,
"final": 4.159,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 6.095,
"final": 5.6261,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.044,
"final": 1.0252,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.853,
"final": 4.3442,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.67,
"final": 1.2396,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.0868,
"final": 5.0868,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4514,
"final": 1.4514,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 47.0,
"ER": 24,
"H": 56,
"BB": 7,
"SO": 34,
"HR": 6,
"ERA": 4.595744680851064,
"WHIP": 1.3404255319148939,
"K9": 6.510638297872341,
"HR9": 1.148936170212766,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-12T00:00:00"
},
"recent_form_boost": 1.0188735704819571,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 6.0,
"predicted_H": 5.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 22.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8148,
"prior_weight": 0.1852
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "685299",
"player_name": "Tanner Gordon",
"position": "Starter",
"team": "COL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 6.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 6.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_R": 6.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": 6.0,
"after": 6.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": 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": 6.0,
"after": 6.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": 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,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "COL",
"games": 152,
"wins": 56,
"losses": 96,
"win_pct": 0.3684,
"runs_scored": 715.0,
"runs_allowed": 885.0,
"run_differential": -170.0,
"run_differential_per_game": -1.1184,
"avg_runs_scored": 4.7039,
"avg_runs_allowed": 5.8224,
"offense_index": 1.0442,
"defense_index": 0.7737,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 1,
"losses": 9,
"win_pct": 0.1,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 7.6,
"run_differential": -32.0
},
"available": true,
"quality_score": -0.3884
},
"opponent": {
"team": "SD",
"games": 152,
"wins": 83,
"losses": 69,
"win_pct": 0.5461,
"runs_scored": 659.0,
"runs_allowed": 636.0,
"run_differential": 23.0,
"run_differential_per_game": 0.1513,
"avg_runs_scored": 4.3355,
"avg_runs_allowed": 4.1842,
"offense_index": 0.9624,
"defense_index": 1.0767,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 9,
"losses": 1,
"win_pct": 0.9,
"avg_runs_scored": 6.1,
"avg_runs_allowed": 4.5,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.1977
},
"edges": {
"quality_edge": -0.5861,
"offense_edge": 0.0442,
"opponent_offense_edge": -0.0376,
"defense_strength": -0.2263,
"opponent_defense_weakness": -0.0767,
"recent_win_pct_edge": -0.8
},
"player_factors": {
"ip": 0.9713,
"run_prevention": 1.0459,
"strikeout": 0.9854
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "685299",
"profile": {
"available": true,
"pitcher_id": "685299",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 400.0,
"k_percent": 18.9,
"bb_percent": 4.2,
"woba": 0.377,
"xwoba": 0.328,
"sweet_spot_percent": 34.3,
"barrel_batted_rate": 10.4,
"hard_hit_percent": 42.8,
"avg_best_speed": 81.1359,
"avg_hyper_speed": 94.647,
"whiff_percent": 22.0,
"swing_percent": 53.2
},
"league_medians": {
"pa": 132.5,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.317,
"xwoba": 0.312,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5748,
"avg_hyper_speed": 93.923,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.7193,
"command_and_miss": -0.1043,
"regression_edge": 1.4,
"xwoba_edge": -0.4571,
"barrel_edge": -0.6889,
"hard_hit_edge": -0.7,
"whiff_edge": -0.4286,
"bb_edge": 1.225,
"pitch_design_score": -0.0637
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "685299",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 75,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 75,
"pitch_usage": 0.0,
"release_speed": 88.71239490372379,
"release_spin_rate": 2167.589195654072,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 75,
"pitch_usage": 0.0,
"release_speed": 88.71239490372379,
"release_spin_rate": 2167.589195654072,
"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.7124,
"release_spin_rate": 2167.5892,
"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.0637,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4551,
"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.295,
"sample_weight": 1.0,
"run_prevention_factor": 1.0251,
"strikeout_factor": 0.9651,
"walk_factor": 0.902,
"homer_factor": 1.0968,
"woba_minus_xwoba": 0.049,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "685299",
"espn_id": 4415658,
"player_name": "Tanner Gordon",
"team": "COL",
"role": "pitcher",
"espn_rank": 213,
"espn_total_ranked": 863,
"metrics": {
"espn_rank": 213,
"gp_value": 22.0,
"gp_rank": 381,
"gs_value": 10.0,
"gs_rank": 175,
"qs_value": 1.0,
"qs_rank": 179,
"era_value": 5.5479,
"era_rank": null,
"w_value": 1.0,
"w_rank": 418,
"l_value": 4.0,
"l_rank": 196,
"sv_value": 0.0,
"sv_rank": 254,
"hld_value": 0.0,
"hld_rank": 358,
"ip_value": 97.1,
"ip_rank": 135,
"h_value": 126.0,
"h_rank": 71,
"er_value": 60.0,
"er_rank": 71,
"hr_value": 18.0,
"hr_rank": 68,
"bb_value": 18.0,
"bb_rank": 340,
"k_value": 81.0,
"k_rank": 158,
"k_per_9_value": 7.489726,
"k_per_9_rank": 31,
"whip_value": 1.4794,
"whip_rank": null,
"war_value": 0.8,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0251,
"adjusted": 3
},
"predicted_H": {
"original": 7.0,
"factor": 1.0251,
"adjusted": 7
},
"predicted_BB": {
"original": 1.0,
"factor": 0.902,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0968,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9651,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 6,
"predicted_ER": 6,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 21,
"Pitches": 94,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -6 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 5",
"detail": "Actual minus predicted hits was +5."
}
],
"provenance": {
"prediction": "output/games/20260917_SD@COL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |