| 20260828 | 20260828_ARI@SF | away | Kohl Drake | Kohl Drake | True | 4.1 | 4.0 | -1 | 6 | 5 | -1 | 6/4 | 2/1 | 4/4 | Last 10 before this game (4 available){
"model_context": {
"embedded_season": {
"ERA": 5.3999999999999995,
"WHIP": 1.5599999999999998,
"IP": 16.2,
"games_started": null,
"games_pitched": 4,
"role_avg_IP": 4.167,
"recent_avg_IP": 4.167,
"last_start_IP": 3.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.6239,
"sample_weight": 0.45,
"run_prevention_factor": 1.053,
"strikeout_factor": 0.9774,
"walk_factor": 0.9874,
"homer_factor": 1.1372,
"regression_flag": "negative_pitcher_regression",
"k_percent": 16.9,
"bb_percent": 7.8,
"woba": 0.397,
"xwoba": 0.43,
"barrel_percent": 16.4,
"hard_hit_percent": 49.1,
"whiff_percent": 21.5
},
"espn_rank": {
"rank": 534,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "684442",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 4,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 4,
"totals": {
"IP": 16.2,
"ER": 10.0,
"R": 10.0,
"H": 20.0,
"BB": 6.0,
"SO": 13.0,
"HR": 3.0,
"BF": 77.0,
"Pitches": 325.0
},
"per_game": {
"IP": 4.0,
"ER": 2.5,
"R": 2.5,
"H": 5.0,
"BB": 1.5,
"SO": 3.25,
"HR": 0.75,
"BF": 19.25,
"Pitches": 81.25
},
"rates": {
"ERA": 5.4,
"WHIP": 1.56,
"ER_per_IP": 0.6,
"H_per_IP": 1.2,
"BB_per_IP": 0.36,
"SO_per_IP": 0.78,
"HR_per_IP": 0.18
}
},
"last_10": {
"games": 4,
"totals": {
"IP": 16.2,
"ER": 10.0,
"R": 10.0,
"H": 20.0,
"BB": 6.0,
"SO": 13.0,
"HR": 3.0,
"BF": 77.0,
"Pitches": 325.0
},
"per_game": {
"IP": 4.0,
"ER": 2.5,
"R": 2.5,
"H": 5.0,
"BB": 1.5,
"SO": 3.25,
"HR": 0.75,
"BF": 19.25,
"Pitches": 81.25
},
"rates": {
"ERA": 5.4,
"WHIP": 1.56,
"ER_per_IP": 0.6,
"H_per_IP": 1.2,
"BB_per_IP": 0.36,
"SO_per_IP": 0.78,
"HR_per_IP": 0.18
}
},
"season": {
"games": 4,
"totals": {
"IP": 16.2,
"ER": 10.0,
"R": 10.0,
"H": 20.0,
"BB": 6.0,
"SO": 13.0,
"HR": 3.0,
"BF": 77.0,
"Pitches": 325.0
},
"per_game": {
"IP": 4.0,
"ER": 2.5,
"R": 2.5,
"H": 5.0,
"BB": 1.5,
"SO": 3.25,
"HR": 0.75,
"BF": 19.25,
"Pitches": 81.25
},
"rates": {
"ERA": 5.4,
"WHIP": 1.56,
"ER_per_IP": 0.6,
"H_per_IP": 1.2,
"BB_per_IP": 0.36,
"SO_per_IP": 0.78,
"HR_per_IP": 0.18
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.384,
"predicted_H": 4.699,
"predicted_BB": 1.596,
"predicted_SO": 3.804,
"predicted_HR": 0.707,
"predicted_ERA": 4.9094,
"predicted_WHIP": 1.4404
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5847,
"form_weight": 0.4153,
"form_reliability": 0.4444,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 6.0,
"form": 2.384,
"final": 4.4984,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.699,
"final": 5.4597,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.596,
"final": 1.8322,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 3.804,
"final": 3.9186,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 3.0,
"form": 0.707,
"final": 2.0478,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.9094,
"final": 4.9094,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4404,
"final": 1.4404,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 16.2,
"ER": 10,
"H": 20,
"BB": 6,
"SO": 13,
"HR": 3,
"ERA": 5.4,
"WHIP": 1.5600000000000003,
"K9": 7.020000000000001,
"HR9": 1.6200000000000003,
"games_pitched": 4,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 4,
"error_prone": false
},
"games_count": 4,
"latest_game_date": "2026-08-06T00:00:00"
},
"recent_form_boost": 1.0640610078251416,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 6.0,
"predicted_H": 6.0,
"predicted_BB": 2.0,
"predicted_SO": 4.0,
"predicted_HR": 3.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 6,
"predicted_H": 6,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 3
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "684442",
"player_name": "Kohl Drake",
"position": "Starter",
"team": "ARI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 6.0,
"predicted_H": 6.0,
"predicted_HR": 3.0,
"predicted_IP": 4.6667,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 6.0,
"predicted_H": 6.0,
"predicted_HR": 3.0,
"predicted_IP": 4.1,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 6.0,
"predicted_H": 6.0,
"predicted_HR": 3.0,
"predicted_IP": 4.1,
"predicted_R": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.1,
"after": 4.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ARI",
"games": 135,
"wins": 71,
"losses": 64,
"win_pct": 0.5259,
"runs_scored": 606.0,
"runs_allowed": 606.0,
"run_differential": 0.0,
"run_differential_per_game": 0.0,
"avg_runs_scored": 4.4889,
"avg_runs_allowed": 4.4889,
"offense_index": 1.0027,
"defense_index": 0.9973,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 5.7,
"run_differential": -18.0
},
"available": true,
"quality_score": 0.022
},
"opponent": {
"team": "SF",
"games": 134,
"wins": 55,
"losses": 79,
"win_pct": 0.4104,
"runs_scored": 546.0,
"runs_allowed": 615.0,
"run_differential": -69.0,
"run_differential_per_game": -0.5149,
"avg_runs_scored": 4.0746,
"avg_runs_allowed": 4.5896,
"offense_index": 0.9102,
"defense_index": 0.9754,
"current_streak": "W1",
"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.1744
},
"edges": {
"quality_edge": 0.1964,
"offense_edge": 0.0027,
"opponent_offense_edge": -0.0898,
"defense_strength": -0.0027,
"opponent_defense_weakness": 0.0246,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0114,
"run_prevention": 0.9761,
"strikeout": 1.0131
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "684442",
"profile": {
"available": true,
"pitcher_id": "684442",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 59.0,
"k_percent": 16.9,
"bb_percent": 7.8,
"woba": 0.397,
"xwoba": 0.43,
"sweet_spot_percent": 43.6,
"barrel_batted_rate": 16.4,
"hard_hit_percent": 49.1,
"avg_best_speed": 82.5062,
"avg_hyper_speed": 95.514,
"whiff_percent": 21.5,
"swing_percent": 44.3
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -2.0707,
"command_and_miss": -0.4429,
"regression_edge": -0.9429,
"xwoba_edge": -2.5,
"barrel_edge": -2.0667,
"hard_hit_edge": -1.6143,
"whiff_edge": -0.5286,
"bb_edge": 0.35,
"pitch_design_score": -0.2181
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "684442",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 81,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 85.95674097830623,
"release_spin_rate": 2251.8831664580725,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 85.95674097830623,
"release_spin_rate": 2251.8831664580725,
"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.9567,
"release_spin_rate": 2251.8832,
"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.2181,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.5582,
"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.6239,
"sample_weight": 0.45,
"run_prevention_factor": 1.053,
"strikeout_factor": 0.9774,
"walk_factor": 0.9874,
"homer_factor": 1.1372,
"woba_minus_xwoba": -0.033,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "684442",
"espn_id": 5264737,
"player_name": "Kohl Drake",
"team": "ARI",
"role": "pitcher",
"espn_rank": 534,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 534,
"gp_value": 4.0,
"gp_rank": 635,
"gs_value": 4.0,
"gs_rank": 222,
"qs_value": 0.0,
"qs_rank": 205,
"era_value": 5.4,
"era_rank": null,
"w_value": 0.0,
"w_rank": 510,
"l_value": 1.0,
"l_rank": 404,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 16.2,
"ip_rank": 523,
"h_value": 20.0,
"h_rank": 490,
"er_value": 10.0,
"er_rank": 503,
"hr_value": 3.0,
"hr_rank": 414,
"bb_value": 6.0,
"bb_rank": 558,
"k_value": 13.0,
"k_rank": 534,
"k_per_9_value": 7.02,
"k_per_9_rank": 27,
"whip_value": 1.56,
"whip_rank": null,
"war_value": -0.04,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0238,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0238,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9943,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0617,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9898,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 6,
"predicted_R": 6,
"predicted_ER": 6,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 3,
"box_score_synced": true,
"BF": 21,
"Pitches": 81,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 4 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260828_ARI@SF.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"
}
} |
| 20260828 | 20260828_ARI@SF | home | Blade Tidwell | Blade Tidwell | True | 5.0 | 5.0 | 0 | 1 | 6 | 5 | 1/7 | 1/1 | 4/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.5816326530612246,
"WHIP": 1.1632653061224492,
"IP": 32.2,
"games_started": null,
"games_pitched": 12,
"role_avg_IP": 5.167,
"recent_avg_IP": 5.167,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1692,
"sample_weight": 0.45,
"run_prevention_factor": 0.9856,
"strikeout_factor": 0.9969,
"walk_factor": 1.0,
"homer_factor": 0.9789,
"regression_flag": "neutral",
"k_percent": 20.6,
"bb_percent": 9.2,
"woba": 0.278,
"xwoba": 0.28,
"barrel_percent": 5.6,
"hard_hit_percent": 38.9,
"whiff_percent": 25.4
},
"espn_rank": {
"rank": 264,
"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": 6.559,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5674,
"prior_weight": 0.4326
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "694918",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 12,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.2,
"ER": 11.0,
"R": 11.0,
"H": 20.0,
"BB": 10.0,
"SO": 19.0,
"HR": 1.0,
"BF": 95.0,
"Pitches": 399.0
},
"per_game": {
"IP": 4.2,
"ER": 2.2,
"R": 2.2,
"H": 4.0,
"BB": 2.0,
"SO": 3.8,
"HR": 0.2,
"BF": 19.0,
"Pitches": 79.8
},
"rates": {
"ERA": 4.3676,
"WHIP": 1.3235,
"ER_per_IP": 0.48529,
"H_per_IP": 0.88235,
"BB_per_IP": 0.44118,
"SO_per_IP": 0.83824,
"HR_per_IP": 0.04412
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 28.2,
"ER": 13.0,
"R": 13.0,
"H": 24.0,
"BB": 11.0,
"SO": 23.0,
"HR": 2.0,
"BF": 118.0,
"Pitches": 478.0
},
"per_game": {
"IP": 3.0,
"ER": 1.3,
"R": 1.3,
"H": 2.4,
"BB": 1.1,
"SO": 2.3,
"HR": 0.2,
"BF": 11.8,
"Pitches": 47.8
},
"rates": {
"ERA": 4.0814,
"WHIP": 1.2209,
"ER_per_IP": 0.45349,
"H_per_IP": 0.83721,
"BB_per_IP": 0.38372,
"SO_per_IP": 0.80233,
"HR_per_IP": 0.06977
}
},
"season": {
"games": 12,
"totals": {
"IP": 32.2,
"ER": 13.0,
"R": 13.0,
"H": 26.0,
"BB": 12.0,
"SO": 27.0,
"HR": 2.0,
"BF": 131.0,
"Pitches": 534.0
},
"per_game": {
"IP": 2.2,
"ER": 1.0833,
"R": 1.0833,
"H": 2.1667,
"BB": 1.0,
"SO": 2.25,
"HR": 0.1667,
"BF": 10.9167,
"Pitches": 44.5
},
"rates": {
"ERA": 3.5816,
"WHIP": 1.1633,
"ER_per_IP": 0.39796,
"H_per_IP": 0.79592,
"BB_per_IP": 0.36735,
"SO_per_IP": 0.82653,
"HR_per_IP": 0.06122
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.025,
"predicted_H": 3.844,
"predicted_BB": 1.66,
"predicted_SO": 3.721,
"predicted_HR": 0.407,
"predicted_ERA": 4.2862,
"predicted_WHIP": 1.2942
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5328,
"form_weight": 0.4672,
"form_reliability": 0.5674,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.559,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5674,
"prior_weight": 0.4326
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.025,
"final": 1.4789,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 3.844,
"final": 2.3288,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.66,
"final": 1.3084,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 3.721,
"final": 3.8696,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.407,
"final": 0.7229,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.2862,
"final": 4.2862,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2942,
"final": 1.2942,
"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": 28.2,
"ER": 13,
"H": 24,
"BB": 11,
"SO": 23,
"HR": 2,
"ERA": 4.0813953488372094,
"WHIP": 1.2209302325581395,
"K9": 7.220930232558139,
"HR9": 0.627906976744186,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.9633522830260896,
"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": 1.0,
"predicted_BB": 1.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.559,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5674,
"prior_weight": 0.4326
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "694918",
"player_name": "Blade Tidwell",
"position": "Starter",
"team": "SF",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 1.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": 1.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 1.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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SF",
"games": 134,
"wins": 55,
"losses": 79,
"win_pct": 0.4104,
"runs_scored": 546.0,
"runs_allowed": 615.0,
"run_differential": -69.0,
"run_differential_per_game": -0.5149,
"avg_runs_scored": 4.0746,
"avg_runs_allowed": 4.5896,
"offense_index": 0.9102,
"defense_index": 0.9754,
"current_streak": "W1",
"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.1744
},
"opponent": {
"team": "ARI",
"games": 135,
"wins": 71,
"losses": 64,
"win_pct": 0.5259,
"runs_scored": 606.0,
"runs_allowed": 606.0,
"run_differential": 0.0,
"run_differential_per_game": 0.0,
"avg_runs_scored": 4.4889,
"avg_runs_allowed": 4.4889,
"offense_index": 1.0027,
"defense_index": 0.9973,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 5.7,
"run_differential": -18.0
},
"available": true,
"quality_score": 0.022
},
"edges": {
"quality_edge": -0.1964,
"offense_edge": -0.0898,
"opponent_offense_edge": 0.0027,
"defense_strength": -0.0246,
"opponent_defense_weakness": 0.0027,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9913,
"run_prevention": 1.0127,
"strikeout": 0.9939
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "694918",
"profile": {
"available": true,
"pitcher_id": "694918",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 110.0,
"k_percent": 20.6,
"bb_percent": 9.2,
"woba": 0.278,
"xwoba": 0.28,
"sweet_spot_percent": 23.3,
"barrel_batted_rate": 5.6,
"hard_hit_percent": 38.9,
"avg_best_speed": 75.677,
"avg_hyper_speed": 93.7767,
"whiff_percent": 25.4,
"swing_percent": 44.9
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.7216,
"command_and_miss": -0.08,
"regression_edge": -0.0571,
"xwoba_edge": 0.8857,
"barrel_edge": 0.3333,
"hard_hit_edge": -0.1571,
"whiff_edge": 0.0286,
"bb_edge": 0.0,
"pitch_design_score": -0.0206
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "694918",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 66,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 66,
"pitch_usage": 0.0,
"release_speed": 89.48410615286664,
"release_spin_rate": 2488.224804520724,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 66,
"pitch_usage": 0.0,
"release_speed": 89.48410615286664,
"release_spin_rate": 2488.224804520724,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 89.4841,
"release_spin_rate": 2488.2248,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0206,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.1472,
"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.1692,
"sample_weight": 0.45,
"run_prevention_factor": 0.9856,
"strikeout_factor": 0.9969,
"walk_factor": 1.0,
"homer_factor": 0.9789,
"woba_minus_xwoba": -0.002,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "694918",
"espn_id": 4719088,
"player_name": "Blade Tidwell",
"team": "SF",
"role": "pitcher",
"espn_rank": 264,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 264,
"gp_value": 12.0,
"gp_rank": 478,
"gs_value": 4.0,
"gs_rank": 222,
"qs_value": 0.0,
"qs_rank": 205,
"era_value": 3.5816,
"era_rank": null,
"w_value": 0.0,
"w_rank": 510,
"l_value": 0.0,
"l_rank": 556,
"sv_value": 1.0,
"sv_rank": 130,
"hld_value": 1.0,
"hld_rank": 253,
"ip_value": 32.2,
"ip_rank": 397,
"h_value": 26.0,
"h_rank": 430,
"er_value": 13.0,
"er_rank": 426,
"hr_value": 2.0,
"hr_rank": 490,
"bb_value": 12.0,
"bb_rank": 420,
"k_value": 27.0,
"k_rank": 421,
"k_per_9_value": 7.4387755,
"k_per_9_rank": 28,
"whip_value": 1.1632,
"whip_rank": null,
"war_value": 0.42,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9935,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9935,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9905,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9986,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 1,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 17,
"Pitches": 72,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 5",
"detail": "Actual minus predicted earned runs was +5; this is the primary run-prevention error."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 6",
"detail": "Actual minus predicted hits was +6."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260828_ARI@SF.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"
}
} |
| 20260828 | 20260828_BAL@OAK | away | Brandon Young | Brandon Young | True | 5.1 | 7.0 | 5 | 4 | 1 | -3 | 7/5 | 0/1 | 4/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.502702702702703,
"WHIP": 1.3621621621621622,
"IP": 123.1,
"games_started": null,
"games_pitched": 22,
"role_avg_IP": 5.606,
"recent_avg_IP": 5.133,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1992,
"sample_weight": 1.0,
"run_prevention_factor": 1.0169,
"strikeout_factor": 0.9691,
"walk_factor": 0.986,
"homer_factor": 1.0224,
"regression_flag": "neutral",
"k_percent": 18.7,
"bb_percent": 8.5,
"woba": 0.322,
"xwoba": 0.322,
"barrel_percent": 6.9,
"hard_hit_percent": 40.7,
"whiff_percent": 23.1
},
"espn_rank": {
"rank": 87,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "687064",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 22,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.2,
"ER": 14.0,
"R": 15.0,
"H": 31.0,
"BB": 11.0,
"SO": 19.0,
"HR": 7.0,
"BF": 114.0,
"Pitches": 462.0
},
"per_game": {
"IP": 5.0,
"ER": 2.8,
"R": 3.0,
"H": 6.2,
"BB": 2.2,
"SO": 3.8,
"HR": 1.4,
"BF": 22.8,
"Pitches": 92.4
},
"rates": {
"ERA": 4.9091,
"WHIP": 1.6364,
"ER_per_IP": 0.54545,
"H_per_IP": 1.20779,
"BB_per_IP": 0.42857,
"SO_per_IP": 0.74026,
"HR_per_IP": 0.27273
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 56.0,
"ER": 25.0,
"R": 26.0,
"H": 63.0,
"BB": 20.0,
"SO": 50.0,
"HR": 10.0,
"BF": 242.0,
"Pitches": 931.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5,
"R": 2.6,
"H": 6.3,
"BB": 2.0,
"SO": 5.0,
"HR": 1.0,
"BF": 24.2,
"Pitches": 93.1
},
"rates": {
"ERA": 4.0179,
"WHIP": 1.4821,
"ER_per_IP": 0.44643,
"H_per_IP": 1.125,
"BB_per_IP": 0.35714,
"SO_per_IP": 0.89286,
"HR_per_IP": 0.17857
}
},
"season": {
"games": 22,
"totals": {
"IP": 123.1,
"ER": 48.0,
"R": 57.0,
"H": 123.0,
"BB": 45.0,
"SO": 99.0,
"HR": 16.0,
"BF": 529.0,
"Pitches": 1983.0
},
"per_game": {
"IP": 5.2,
"ER": 2.1818,
"R": 2.5909,
"H": 5.5909,
"BB": 2.0455,
"SO": 4.5,
"HR": 0.7273,
"BF": 24.0455,
"Pitches": 90.1364
},
"rates": {
"ERA": 3.5027,
"WHIP": 1.3622,
"ER_per_IP": 0.38919,
"H_per_IP": 0.9973,
"BB_per_IP": 0.36486,
"SO_per_IP": 0.8027,
"HR_per_IP": 0.12973
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.593,
"predicted_H": 5.933,
"predicted_BB": 2.074,
"predicted_SO": 4.457,
"predicted_HR": 1.068,
"predicted_ERA": 4.3531,
"predicted_WHIP": 1.4937
}
},
"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.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.593,
"final": 3.1955,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 5.933,
"final": 6.3899,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.074,
"final": 1.1858,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.457,
"final": 4.2613,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.068,
"final": 0.6106,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.3531,
"final": 4.3531,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4937,
"final": 1.4937,
"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": 25,
"H": 63,
"BB": 20,
"SO": 50,
"HR": 10,
"ERA": 4.017857142857143,
"WHIP": 1.4821428571428572,
"K9": 8.035714285714286,
"HR9": 1.6071428571428572,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.9602418825467438,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_BB": 0.0,
"predicted_SO": 4.0,
"predicted_HR": 0.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": "687064",
"player_name": "Brandon Young",
"position": "Starter",
"team": "BAL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 4.0,
"predicted_H": 7.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_R": 4.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BAL",
"games": 134,
"wins": 65,
"losses": 69,
"win_pct": 0.4851,
"runs_scored": 609.0,
"runs_allowed": 633.0,
"run_differential": -24.0,
"run_differential_per_game": -0.1791,
"avg_runs_scored": 4.5448,
"avg_runs_allowed": 4.7239,
"offense_index": 1.0152,
"defense_index": 0.9477,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.4,
"run_differential": 2.0
},
"available": true,
"quality_score": -0.0697
},
"opponent": {
"team": "OAK",
"games": 134,
"wins": 53,
"losses": 81,
"win_pct": 0.3955,
"runs_scored": 585.0,
"runs_allowed": 770.0,
"run_differential": -185.0,
"run_differential_per_game": -1.3806,
"avg_runs_scored": 4.3657,
"avg_runs_allowed": 5.7463,
"offense_index": 0.9752,
"defense_index": 0.7791,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 5.6,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.2934
},
"edges": {
"quality_edge": 0.2237,
"offense_edge": 0.0152,
"opponent_offense_edge": -0.0248,
"defense_strength": -0.0523,
"opponent_defense_weakness": 0.2209,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0084,
"run_prevention": 0.9901,
"strikeout": 1.0087
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "687064",
"profile": {
"available": true,
"pitcher_id": "687064",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 503.0,
"k_percent": 18.7,
"bb_percent": 8.5,
"woba": 0.322,
"xwoba": 0.322,
"sweet_spot_percent": 33.9,
"barrel_batted_rate": 6.9,
"hard_hit_percent": 40.7,
"avg_best_speed": 78.625,
"avg_hyper_speed": 94.3579,
"whiff_percent": 23.1,
"swing_percent": 49.6
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.2141,
"command_and_miss": -0.2821,
"regression_edge": 0.0,
"xwoba_edge": -0.3143,
"barrel_edge": 0.0444,
"hard_hit_edge": -0.4143,
"whiff_edge": -0.3,
"bb_edge": 0.175,
"pitch_design_score": -0.0747
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687064",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 94,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 88.51860048115898,
"release_spin_rate": 2057.9819103388677,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 88.51860048115898,
"release_spin_rate": 2057.9819103388677,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 88.5186,
"release_spin_rate": 2057.9819,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0747,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5335,
"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.1992,
"sample_weight": 1.0,
"run_prevention_factor": 1.0169,
"strikeout_factor": 0.9691,
"walk_factor": 0.986,
"homer_factor": 1.0224,
"woba_minus_xwoba": 0.0,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "687064",
"espn_id": 4414339,
"player_name": "Brandon Young",
"team": "BAL",
"role": "pitcher",
"espn_rank": 87,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 87,
"gp_value": 22.0,
"gp_rank": 338,
"gs_value": 22.0,
"gs_rank": 75,
"qs_value": 10.0,
"qs_rank": 51,
"era_value": 3.5027,
"era_rank": null,
"w_value": 9.0,
"w_rank": 30,
"l_value": 3.0,
"l_rank": 220,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 123.1,
"ip_rank": 77,
"h_value": 123.0,
"h_rank": 54,
"er_value": 48.0,
"er_rank": 99,
"hr_value": 16.0,
"hr_rank": 68,
"bb_value": 45.0,
"bb_rank": 44,
"k_value": 99.0,
"k_rank": 92,
"k_per_9_value": 7.224324,
"k_per_9_rank": 32,
"whip_value": 1.3621,
"whip_rank": null,
"war_value": 1.73,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0169,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0169,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.986,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0224,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9691,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 7,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 0,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 99,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260828_BAL@OAK.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"
}
} |
| 20260828 | 20260828_BAL@OAK | home | Jacob Lopez | Jacob Lopez | True | 5.0 | 5.0 | 0 | 6 | 1 | -5 | 4/3 | 4/3 | 4/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.9787234042553195,
"WHIP": 1.4787234042553192,
"IP": 94.0,
"games_started": null,
"games_pitched": 21,
"role_avg_IP": 4.741,
"recent_avg_IP": 5.867,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.361,
"sample_weight": 1.0,
"run_prevention_factor": 0.9693,
"strikeout_factor": 0.9954,
"walk_factor": 1.04,
"homer_factor": 0.9048,
"regression_flag": "positive_pitcher_regression",
"k_percent": 21.5,
"bb_percent": 11.2,
"woba": 0.337,
"xwoba": 0.285,
"barrel_percent": 5.7,
"hard_hit_percent": 29.4,
"whiff_percent": 24.9
},
"espn_rank": {
"rank": 168,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "682052",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 21,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.1,
"ER": 8.0,
"R": 9.0,
"H": 24.0,
"BB": 7.0,
"SO": 37.0,
"HR": 4.0,
"BF": 117.0,
"Pitches": 461.0
},
"per_game": {
"IP": 6.0,
"ER": 1.6,
"R": 1.8,
"H": 4.8,
"BB": 1.4,
"SO": 7.4,
"HR": 0.8,
"BF": 23.4,
"Pitches": 92.2
},
"rates": {
"ERA": 2.4545,
"WHIP": 1.0568,
"ER_per_IP": 0.27273,
"H_per_IP": 0.81818,
"BB_per_IP": 0.23864,
"SO_per_IP": 1.26136,
"HR_per_IP": 0.13636
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 45.1,
"ER": 21.0,
"R": 22.0,
"H": 37.0,
"BB": 16.0,
"SO": 55.0,
"HR": 4.0,
"BF": 189.0,
"Pitches": 767.0
},
"per_game": {
"IP": 4.2,
"ER": 2.1,
"R": 2.2,
"H": 3.7,
"BB": 1.6,
"SO": 5.5,
"HR": 0.4,
"BF": 18.9,
"Pitches": 76.7
},
"rates": {
"ERA": 4.1691,
"WHIP": 1.1691,
"ER_per_IP": 0.46324,
"H_per_IP": 0.81618,
"BB_per_IP": 0.35294,
"SO_per_IP": 1.21324,
"HR_per_IP": 0.08824
}
},
"season": {
"games": 21,
"totals": {
"IP": 94.0,
"ER": 52.0,
"R": 54.0,
"H": 92.0,
"BB": 47.0,
"SO": 90.0,
"HR": 15.0,
"BF": 419.0,
"Pitches": 1689.0
},
"per_game": {
"IP": 4.1,
"ER": 2.4762,
"R": 2.5714,
"H": 4.381,
"BB": 2.2381,
"SO": 4.2857,
"HR": 0.7143,
"BF": 19.9524,
"Pitches": 80.4286
},
"rates": {
"ERA": 4.9787,
"WHIP": 1.4787,
"ER_per_IP": 0.55319,
"H_per_IP": 0.97872,
"BB_per_IP": 0.5,
"SO_per_IP": 0.95745,
"HR_per_IP": 0.15957
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.174,
"predicted_H": 4.566,
"predicted_BB": 1.768,
"predicted_SO": 5.943,
"predicted_HR": 0.672,
"predicted_ERA": 3.7436,
"predicted_WHIP": 1.2121
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4312,
"form_weight": 0.5688,
"form_reliability": 0.8077,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 6.0,
"form": 2.174,
"final": 3.824,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.566,
"final": 4.3219,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.768,
"final": 2.7305,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 5.943,
"final": 5.1051,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.672,
"final": 1.2447,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.7436,
"final": 3.7436,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2121,
"final": 1.2121,
"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": 45.1,
"ER": 21,
"H": 37,
"BB": 16,
"SO": 55,
"HR": 4,
"ERA": 4.169117647058824,
"WHIP": 1.1691176470588236,
"K9": 10.919117647058824,
"HR9": 0.7941176470588236,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.9694330590173321,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 6.0,
"predicted_H": 4.0,
"predicted_BB": 4.0,
"predicted_SO": 4.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 6,
"predicted_H": 4,
"predicted_BB": 4,
"predicted_SO": 4,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "682052",
"player_name": "Jacob Lopez",
"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": 4.0,
"predicted_ER": 6.0,
"predicted_H": 4.0,
"predicted_HR": 2.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": 4.0,
"predicted_ER": 6.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": 4.0,
"predicted_ER": 6.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_R": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": 4.0,
"after": 4.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": "OAK",
"games": 134,
"wins": 53,
"losses": 81,
"win_pct": 0.3955,
"runs_scored": 585.0,
"runs_allowed": 770.0,
"run_differential": -185.0,
"run_differential_per_game": -1.3806,
"avg_runs_scored": 4.3657,
"avg_runs_allowed": 5.7463,
"offense_index": 0.9752,
"defense_index": 0.7791,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 5.6,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.2934
},
"opponent": {
"team": "BAL",
"games": 134,
"wins": 65,
"losses": 69,
"win_pct": 0.4851,
"runs_scored": 609.0,
"runs_allowed": 633.0,
"run_differential": -24.0,
"run_differential_per_game": -0.1791,
"avg_runs_scored": 4.5448,
"avg_runs_allowed": 4.7239,
"offense_index": 1.0152,
"defense_index": 0.9477,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.4,
"run_differential": 2.0
},
"available": true,
"quality_score": -0.0697
},
"edges": {
"quality_edge": -0.2237,
"offense_edge": -0.0248,
"opponent_offense_edge": 0.0152,
"defense_strength": -0.2209,
"opponent_defense_weakness": 0.0523,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9838,
"run_prevention": 1.0357,
"strikeout": 0.9921
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "682052",
"profile": {
"available": true,
"pitcher_id": "682052",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 393.0,
"k_percent": 21.5,
"bb_percent": 11.2,
"woba": 0.337,
"xwoba": 0.285,
"sweet_spot_percent": 31.2,
"barrel_batted_rate": 5.7,
"hard_hit_percent": 29.4,
"avg_best_speed": 71.9405,
"avg_hyper_speed": 92.4267,
"whiff_percent": 24.9,
"swing_percent": 45.6
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.4876,
"command_and_miss": -0.1471,
"regression_edge": 1.4857,
"xwoba_edge": 0.7429,
"barrel_edge": 0.3111,
"hard_hit_edge": 1.2,
"whiff_edge": -0.0429,
"bb_edge": -0.5,
"pitch_design_score": -0.28
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "682052",
"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": 84.33938318705401,
"release_spin_rate": 2262.340834097883,
"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": 84.33938318705401,
"release_spin_rate": 2262.340834097883,
"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": 84.3394,
"release_spin_rate": 2262.3408,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.28,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -2.0,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.361,
"sample_weight": 1.0,
"run_prevention_factor": 0.9693,
"strikeout_factor": 0.9954,
"walk_factor": 1.04,
"homer_factor": 0.9048,
"woba_minus_xwoba": 0.052,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "682052",
"espn_id": 42239,
"player_name": "Jacob Lopez",
"team": "ATH",
"role": "pitcher",
"espn_rank": 168,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 168,
"gp_value": 21.0,
"gp_rank": 351,
"gs_value": 18.0,
"gs_rank": 104,
"qs_value": 3.0,
"qs_rank": 133,
"era_value": 4.9787,
"era_rank": null,
"w_value": 5.0,
"w_rank": 125,
"l_value": 4.0,
"l_rank": 164,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 1.0,
"hld_rank": 253,
"ip_value": 94.0,
"ip_rank": 122,
"h_value": 92.0,
"h_rank": 111,
"er_value": 52.0,
"er_rank": 80,
"hr_value": 15.0,
"hr_rank": 75,
"bb_value": 47.0,
"bb_rank": 39,
"k_value": 90.0,
"k_rank": 108,
"k_per_9_value": 8.617022,
"k_per_9_rank": 23,
"whip_value": 1.4787,
"whip_rank": null,
"war_value": 0.99,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9693,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9693,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.04,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9048,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 0.9954,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 6,
"predicted_ER": 6,
"predicted_BB": 4,
"predicted_SO": 4,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 23,
"Pitches": 99,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 5",
"detail": "Actual minus predicted earned runs was -5; 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/20260828_BAL@OAK.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"
}
} |
| 20260828 | 20260828_BOS@NYY | away | Patrick Sandoval | Patrick Sandoval | True | 5.0 | 5.1 | 1 | 4 | 1 | -3 | 6/3 | 2/4 | 3/7 | Last 10 before this game (8 available){
"model_context": {
"embedded_season": {
"ERA": 4.53781512605042,
"WHIP": 1.7647058823529413,
"IP": 39.2,
"games_started": null,
"games_pitched": 8,
"role_avg_IP": 4.958,
"recent_avg_IP": 5.133,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1078,
"sample_weight": 0.636,
"run_prevention_factor": 1.0092,
"strikeout_factor": 1.0051,
"walk_factor": 1.0076,
"homer_factor": 0.9943,
"regression_flag": "positive_pitcher_regression",
"k_percent": 22.3,
"bb_percent": 9.8,
"woba": 0.378,
"xwoba": 0.339,
"barrel_percent": 6.5,
"hard_hit_percent": 33.9,
"whiff_percent": 26.3
},
"espn_rank": {
"rank": 613,
"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.6818181818181818,
"last_10": 0.3181818181818182
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6154,
"prior_weight": 0.3846
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663776",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 8,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.2,
"ER": 15.0,
"R": 17.0,
"H": 33.0,
"BB": 14.0,
"SO": 28.0,
"HR": 4.0,
"BF": 120.0,
"Pitches": 447.0
},
"per_game": {
"IP": 5.0,
"ER": 3.0,
"R": 3.4,
"H": 6.6,
"BB": 2.8,
"SO": 5.6,
"HR": 0.8,
"BF": 24.0,
"Pitches": 89.4
},
"rates": {
"ERA": 5.2597,
"WHIP": 1.8312,
"ER_per_IP": 0.58442,
"H_per_IP": 1.28571,
"BB_per_IP": 0.54545,
"SO_per_IP": 1.09091,
"HR_per_IP": 0.15584
}
},
"last_10": {
"games": 8,
"totals": {
"IP": 39.2,
"ER": 20.0,
"R": 23.0,
"H": 52.0,
"BB": 18.0,
"SO": 41.0,
"HR": 5.0,
"BF": 184.0,
"Pitches": 672.0
},
"per_game": {
"IP": 5.0,
"ER": 2.5,
"R": 2.875,
"H": 6.5,
"BB": 2.25,
"SO": 5.125,
"HR": 0.625,
"BF": 23.0,
"Pitches": 84.0
},
"rates": {
"ERA": 4.5378,
"WHIP": 1.7647,
"ER_per_IP": 0.5042,
"H_per_IP": 1.31092,
"BB_per_IP": 0.45378,
"SO_per_IP": 1.03361,
"HR_per_IP": 0.12605
}
},
"season": {
"games": 8,
"totals": {
"IP": 39.2,
"ER": 20.0,
"R": 23.0,
"H": 52.0,
"BB": 18.0,
"SO": 41.0,
"HR": 5.0,
"BF": 184.0,
"Pitches": 672.0
},
"per_game": {
"IP": 5.0,
"ER": 2.5,
"R": 2.875,
"H": 6.5,
"BB": 2.25,
"SO": 5.125,
"HR": 0.625,
"BF": 23.0,
"Pitches": 84.0
},
"rates": {
"ERA": 4.5378,
"WHIP": 1.7647,
"ER_per_IP": 0.5042,
"H_per_IP": 1.31092,
"BB_per_IP": 0.45378,
"SO_per_IP": 1.03361,
"HR_per_IP": 0.12605
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.685,
"predicted_H": 5.857,
"predicted_BB": 2.299,
"predicted_SO": 5.113,
"predicted_HR": 0.733,
"predicted_ERA": 4.8327,
"predicted_WHIP": 1.6311
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5125,
"form_weight": 0.4875,
"form_reliability": 0.6154,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6154,
"prior_weight": 0.3846
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.685,
"final": 2.8464,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.857,
"final": 4.9053,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.299,
"final": 2.1458,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 5.113,
"final": 3.5176,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.733,
"final": 0.8698,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.8327,
"final": 4.8327,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.6311,
"final": 1.6311,
"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": 39.2,
"ER": 20,
"H": 52,
"BB": 18,
"SO": 41,
"HR": 5,
"ERA": 4.53781512605042,
"WHIP": 1.764705882352941,
"K9": 9.30252100840336,
"HR9": 1.134453781512605,
"games_pitched": 8,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 8,
"error_prone": false
},
"games_count": 8,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 1.0258012312862395,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_BB": 2.0,
"predicted_SO": 2.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6154,
"prior_weight": 0.3846
}
},
{
"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": 5.0,
"predicted_ER": 3,
"predicted_H": 6,
"predicted_BB": 2,
"predicted_SO": 2,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663776",
"player_name": "Patrick Sandoval",
"position": "Starter",
"team": "BOS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 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": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.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": 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": 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": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 5.0,
"after": 5.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": 2,
"boosted_metrics": 2,
"deboosted_metrics": 0,
"better_metrics": 1,
"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,
"has_material_change": true,
"dominant_effect": "boosted"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BOS",
"games": 133,
"wins": 73,
"losses": 60,
"win_pct": 0.5489,
"runs_scored": 600.0,
"runs_allowed": 499.0,
"run_differential": 101.0,
"run_differential_per_game": 0.7594,
"avg_runs_scored": 4.5113,
"avg_runs_allowed": 3.7519,
"offense_index": 1.0095,
"defense_index": 1.191,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 3.9,
"run_differential": 15.0
},
"available": true,
"quality_score": 0.205
},
"opponent": {
"team": "NYY",
"games": 133,
"wins": 75,
"losses": 58,
"win_pct": 0.5639,
"runs_scored": 596.0,
"runs_allowed": 496.0,
"run_differential": 100.0,
"run_differential_per_game": 0.7519,
"avg_runs_scored": 4.4812,
"avg_runs_allowed": 3.7293,
"offense_index": 1.0028,
"defense_index": 1.1982,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 3.3,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.2169
},
"edges": {
"quality_edge": -0.0119,
"offense_edge": 0.0095,
"opponent_offense_edge": 0.0028,
"defense_strength": 0.191,
"opponent_defense_weakness": -0.1982,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0051,
"run_prevention": 0.9819,
"strikeout": 0.9994
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663776",
"profile": {
"available": true,
"pitcher_id": "663776",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 159.0,
"k_percent": 22.3,
"bb_percent": 9.8,
"woba": 0.378,
"xwoba": 0.339,
"sweet_spot_percent": 35.5,
"barrel_batted_rate": 6.5,
"hard_hit_percent": 33.9,
"avg_best_speed": 75.5494,
"avg_hyper_speed": 93.4087,
"whiff_percent": 26.3,
"swing_percent": 47.6
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.5098,
"command_and_miss": 0.0443,
"regression_edge": 1.1143,
"xwoba_edge": -0.8,
"barrel_edge": 0.1333,
"hard_hit_edge": 0.5571,
"whiff_edge": 0.1571,
"bb_edge": -0.15,
"pitch_design_score": -0.0871
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663776",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 87,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 88.29745412076173,
"release_spin_rate": 2185.3833510165955,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 88.29745412076173,
"release_spin_rate": 2185.3833510165955,
"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.2975,
"release_spin_rate": 2185.3834,
"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.0871,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.6219,
"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.1078,
"sample_weight": 0.636,
"run_prevention_factor": 1.0092,
"strikeout_factor": 1.0051,
"walk_factor": 1.0076,
"homer_factor": 0.9943,
"woba_minus_xwoba": 0.039,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "663776",
"espn_id": 40975,
"player_name": "Patrick Sandoval",
"team": "BOS",
"role": "pitcher",
"espn_rank": 613,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 613,
"gp_value": 8.0,
"gp_rank": 535,
"gs_value": 8.0,
"gs_rank": 179,
"qs_value": 1.0,
"qs_rank": 174,
"era_value": 4.5378,
"era_rank": null,
"w_value": 1.0,
"w_rank": 391,
"l_value": 2.0,
"l_rank": 306,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 39.2,
"ip_rank": 351,
"h_value": 52.0,
"h_rank": 206,
"er_value": 20.0,
"er_rank": 291,
"hr_value": 5.0,
"hr_rank": 291,
"bb_value": 18.0,
"bb_rank": 306,
"k_value": 41.0,
"k_rank": 319,
"k_per_9_value": 9.302522,
"k_per_9_rank": 24,
"whip_value": 1.7647,
"whip_rank": null,
"war_value": -0.16,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0059,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0059,
"adjusted": 6
},
"predicted_BB": {
"original": 3.0,
"factor": 1.0048,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9964,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0032,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 26,
"Pitches": 101,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 8 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."
}
],
"provenance": {
"prediction": "output/games/20260828_BOS@NYY.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"
}
} |
| 20260828 | 20260828_BOS@NYY | home | Cam Schlittler | Cam Schlittler | True | 6.0 | 5.2 | -1 | 2 | 0 | -2 | 6/2 | 3/5 | 7/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.1645569620253164,
"WHIP": 0.9620253164556962,
"IP": 158.0,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.852,
"recent_avg_IP": 5.533,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.6471,
"sample_weight": 1.0,
"run_prevention_factor": 0.945,
"strikeout_factor": 1.0703,
"walk_factor": 0.934,
"homer_factor": 0.9801,
"regression_flag": "neutral",
"k_percent": 30.8,
"bb_percent": 5.9,
"woba": 0.255,
"xwoba": 0.266,
"barrel_percent": 7.7,
"hard_hit_percent": 39.2,
"whiff_percent": 28.7
},
"espn_rank": {
"rank": 3,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 6.0,
"season_IP": 158.0,
"season_ERA": 2.165,
"season_WHIP": 0.962,
"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": 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": "693645",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.2,
"ER": 8.0,
"R": 8.0,
"H": 19.0,
"BB": 12.0,
"SO": 36.0,
"HR": 2.0,
"BF": 112.0,
"Pitches": 465.0
},
"per_game": {
"IP": 5.2,
"ER": 1.6,
"R": 1.6,
"H": 3.8,
"BB": 2.4,
"SO": 7.2,
"HR": 0.4,
"BF": 22.4,
"Pitches": 93.0
},
"rates": {
"ERA": 2.6024,
"WHIP": 1.1205,
"ER_per_IP": 0.28916,
"H_per_IP": 0.68675,
"BB_per_IP": 0.43373,
"SO_per_IP": 1.3012,
"HR_per_IP": 0.07229
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 58.0,
"ER": 20.0,
"R": 20.0,
"H": 43.0,
"BB": 17.0,
"SO": 75.0,
"HR": 8.0,
"BF": 233.0,
"Pitches": 947.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0,
"R": 2.0,
"H": 4.3,
"BB": 1.7,
"SO": 7.5,
"HR": 0.8,
"BF": 23.3,
"Pitches": 94.7
},
"rates": {
"ERA": 3.1034,
"WHIP": 1.0345,
"ER_per_IP": 0.34483,
"H_per_IP": 0.74138,
"BB_per_IP": 0.2931,
"SO_per_IP": 1.2931,
"HR_per_IP": 0.13793
}
},
"season": {
"games": 27,
"totals": {
"IP": 158.0,
"ER": 38.0,
"R": 45.0,
"H": 115.0,
"BB": 37.0,
"SO": 193.0,
"HR": 14.0,
"BF": 627.0,
"Pitches": 2482.0
},
"per_game": {
"IP": 6.0,
"ER": 1.4074,
"R": 1.6667,
"H": 4.2593,
"BB": 1.3704,
"SO": 7.1481,
"HR": 0.5185,
"BF": 23.2222,
"Pitches": 91.9259
},
"rates": {
"ERA": 2.1646,
"WHIP": 0.962,
"ER_per_IP": 0.24051,
"H_per_IP": 0.72785,
"BB_per_IP": 0.23418,
"SO_per_IP": 1.22152,
"HR_per_IP": 0.08861
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 1.909,
"predicted_H": 4.36,
"predicted_BB": 2.012,
"predicted_SO": 7.099,
"predicted_HR": 0.613,
"predicted_ERA": 2.9755,
"predicted_WHIP": 1.1034
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.416,
"form_weight": 0.584,
"form_reliability": 0.8438,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 1.909,
"final": 2.7788,
"source": "model_form_blend"
},
"predicted_H": {
"model": 8.0,
"form": 4.36,
"final": 5.8742,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.012,
"final": 2.423,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 7.099,
"final": 6.6418,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.613,
"final": 0.358,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.9755,
"final": 2.9755,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1034,
"final": 1.1034,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 58.0,
"ER": 20,
"H": 43,
"BB": 17,
"SO": 75,
"HR": 8,
"ERA": 3.103448275862069,
"WHIP": 1.0344827586206897,
"K9": 11.637931034482758,
"HR9": 1.2413793103448276,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-21T00:00:00"
},
"recent_form_boost": 0.8461793825467439,
"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": 8.0,
"predicted_BB": 3.0,
"predicted_SO": 6.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": 8,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "693645",
"player_name": "Cam Schlittler",
"position": "Starter",
"team": "NYY",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 4.0,
"predicted_H": 8.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": 8.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 2,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 6.0,
"delta": -2.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_H",
"before": 8.0,
"after": 6.0,
"delta": -2.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 6.0,
"delta": -2.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 3,
"boosted_metrics": 1,
"deboosted_metrics": 2,
"better_metrics": 3,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYY",
"games": 133,
"wins": 75,
"losses": 58,
"win_pct": 0.5639,
"runs_scored": 596.0,
"runs_allowed": 496.0,
"run_differential": 100.0,
"run_differential_per_game": 0.7519,
"avg_runs_scored": 4.4812,
"avg_runs_allowed": 3.7293,
"offense_index": 1.0028,
"defense_index": 1.1982,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 3.3,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.2169
},
"opponent": {
"team": "BOS",
"games": 133,
"wins": 73,
"losses": 60,
"win_pct": 0.5489,
"runs_scored": 600.0,
"runs_allowed": 499.0,
"run_differential": 101.0,
"run_differential_per_game": 0.7594,
"avg_runs_scored": 4.5113,
"avg_runs_allowed": 3.7519,
"offense_index": 1.0095,
"defense_index": 1.191,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 3.9,
"run_differential": 15.0
},
"available": true,
"quality_score": 0.205
},
"edges": {
"quality_edge": 0.0119,
"offense_edge": 0.0028,
"opponent_offense_edge": 0.0095,
"defense_strength": 0.1982,
"opponent_defense_weakness": -0.191,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.006,
"run_prevention": 0.9811,
"strikeout": 0.9996
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "693645",
"profile": {
"available": true,
"pitcher_id": "693645",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 571.0,
"k_percent": 30.8,
"bb_percent": 5.9,
"woba": 0.255,
"xwoba": 0.266,
"sweet_spot_percent": 33.1,
"barrel_batted_rate": 7.7,
"hard_hit_percent": 39.2,
"avg_best_speed": 77.3309,
"avg_hyper_speed": 93.8079,
"whiff_percent": 28.7,
"swing_percent": 52.3
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.7511,
"command_and_miss": 0.9057,
"regression_edge": -0.3143,
"xwoba_edge": 1.2857,
"barrel_edge": -0.1333,
"hard_hit_edge": -0.2,
"whiff_edge": 0.5,
"bb_edge": 0.825,
"pitch_design_score": 0.28
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "693645",
"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": 95.86598593414776,
"release_spin_rate": 2500.592351861234,
"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": 95.86598593414776,
"release_spin_rate": 2500.592351861234,
"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": 95.866,
"release_spin_rate": 2500.5924,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.28,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 2.0,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.6471,
"sample_weight": 1.0,
"run_prevention_factor": 0.945,
"strikeout_factor": 1.0703,
"walk_factor": 0.934,
"homer_factor": 0.9801,
"woba_minus_xwoba": -0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "693645",
"espn_id": 5134581,
"player_name": "Cam Schlittler",
"team": "NYY",
"role": "pitcher",
"espn_rank": 3,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 3,
"gp_value": 27.0,
"gp_rank": 226,
"gs_value": 27.0,
"gs_rank": 5,
"qs_value": 16.0,
"qs_rank": 8,
"era_value": 2.1645,
"era_rank": 3.0,
"w_value": 11.0,
"w_rank": 19,
"l_value": 6.0,
"l_rank": 99,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 158.0,
"ip_rank": 6,
"h_value": 115.0,
"h_rank": 74,
"er_value": 38.0,
"er_rank": 143,
"hr_value": 14.0,
"hr_rank": 90,
"bb_value": 37.0,
"bb_rank": 85,
"k_value": 193.0,
"k_rank": 6,
"k_per_9_value": 10.993671,
"k_per_9_rank": 27,
"whip_value": 0.962,
"whip_rank": 4.0,
"war_value": 5.5,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.945,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.945,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.934,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9801,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0703,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 6,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 27,
"Pitches": 108,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was -4."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260828_BOS@NYY.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"
}
} |
| 20260828 | 20260828_CHW@MIN | away | Luis Castillo | Luis Castillo | True | 5.0 | 4.0 | -3 | 2 | 4 | 2 | 5/8 | 4/1 | 7/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.186440677966102,
"WHIP": 1.4152542372881356,
"IP": 118.0,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 5.079,
"recent_avg_IP": 4.667,
"last_start_IP": 2.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.359,
"sample_weight": 1.0,
"run_prevention_factor": 1.0305,
"strikeout_factor": 0.9863,
"walk_factor": 0.956,
"homer_factor": 1.0983,
"regression_flag": "neutral",
"k_percent": 20.0,
"bb_percent": 7.0,
"woba": 0.346,
"xwoba": 0.339,
"barrel_percent": 9.8,
"hard_hit_percent": 42.4,
"whiff_percent": 24.8
},
"espn_rank": {
"rank": 803,
"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": "622491",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.1,
"ER": 17.0,
"R": 18.0,
"H": 34.0,
"BB": 7.0,
"SO": 21.0,
"HR": 7.0,
"BF": 108.0,
"Pitches": 444.0
},
"per_game": {
"IP": 4.2,
"ER": 3.4,
"R": 3.6,
"H": 6.8,
"BB": 1.4,
"SO": 4.2,
"HR": 1.4,
"BF": 21.6,
"Pitches": 88.8
},
"rates": {
"ERA": 6.5571,
"WHIP": 1.7571,
"ER_per_IP": 0.72857,
"H_per_IP": 1.45714,
"BB_per_IP": 0.3,
"SO_per_IP": 0.9,
"HR_per_IP": 0.3
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.1,
"ER": 31.0,
"R": 33.0,
"H": 63.0,
"BB": 12.0,
"SO": 40.0,
"HR": 12.0,
"BF": 227.0,
"Pitches": 891.0
},
"per_game": {
"IP": 5.0,
"ER": 3.1,
"R": 3.3,
"H": 6.3,
"BB": 1.2,
"SO": 4.0,
"HR": 1.2,
"BF": 22.7,
"Pitches": 89.1
},
"rates": {
"ERA": 5.4351,
"WHIP": 1.461,
"ER_per_IP": 0.6039,
"H_per_IP": 1.22727,
"BB_per_IP": 0.23377,
"SO_per_IP": 0.77922,
"HR_per_IP": 0.23377
}
},
"season": {
"games": 24,
"totals": {
"IP": 118.0,
"ER": 68.0,
"R": 78.0,
"H": 130.0,
"BB": 37.0,
"SO": 105.0,
"HR": 21.0,
"BF": 525.0,
"Pitches": 2121.0
},
"per_game": {
"IP": 5.0,
"ER": 2.8333,
"R": 3.25,
"H": 5.4167,
"BB": 1.5417,
"SO": 4.375,
"HR": 0.875,
"BF": 21.875,
"Pitches": 88.375
},
"rates": {
"ERA": 5.1864,
"WHIP": 1.4153,
"ER_per_IP": 0.57627,
"H_per_IP": 1.10169,
"BB_per_IP": 0.31356,
"SO_per_IP": 0.88983,
"HR_per_IP": 0.17797
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 3.063,
"predicted_H": 6.088,
"predicted_BB": 1.438,
"predicted_SO": 4.245,
"predicted_HR": 1.142,
"predicted_ERA": 5.6535,
"predicted_WHIP": 1.5437
}
},
"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.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 3.063,
"final": 2.6135,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 6.088,
"final": 5.628,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.438,
"final": 2.5213,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.245,
"final": 4.5642,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.142,
"final": 1.082,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.6535,
"final": 5.6535,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5437,
"final": 1.5437,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 51.1,
"ER": 31,
"H": 63,
"BB": 12,
"SO": 40,
"HR": 12,
"ERA": 5.4350649350649345,
"WHIP": 1.461038961038961,
"K9": 7.012987012987013,
"HR9": 2.103896103896104,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 1.119150161767523,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_BB": 4.0,
"predicted_SO": 5.0,
"predicted_HR": 1.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "622491",
"player_name": "Luis Castillo",
"position": "Starter",
"team": "CHW",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.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": 4.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 7.0,
"delta": 2.0,
"percent_delta": 0.4,
"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": 7.0,
"delta": 2.0,
"percent_delta": 0.4,
"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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 7.0,
"delta": 2.0,
"percent_delta": 0.4,
"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": 7.0,
"delta": 2.0,
"percent_delta": 0.4,
"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": "CHW",
"games": 133,
"wins": 70,
"losses": 63,
"win_pct": 0.5263,
"runs_scored": 641.0,
"runs_allowed": 597.0,
"run_differential": 44.0,
"run_differential_per_game": 0.3308,
"avg_runs_scored": 4.8195,
"avg_runs_allowed": 4.4887,
"offense_index": 1.08,
"defense_index": 0.9941,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 5.0,
"run_differential": -3.0
},
"available": true,
"quality_score": 0.0631
},
"opponent": {
"team": "MIN",
"games": 134,
"wins": 64,
"losses": 70,
"win_pct": 0.4776,
"runs_scored": 615.0,
"runs_allowed": 671.0,
"run_differential": -56.0,
"run_differential_per_game": -0.4179,
"avg_runs_scored": 4.5896,
"avg_runs_allowed": 5.0075,
"offense_index": 1.0285,
"defense_index": 0.8911,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 5.2,
"run_differential": -10.0
},
"available": true,
"quality_score": -0.1055
},
"edges": {
"quality_edge": 0.1686,
"offense_edge": 0.08,
"opponent_offense_edge": 0.0285,
"defense_strength": -0.0059,
"opponent_defense_weakness": 0.1089,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0054,
"run_prevention": 0.9967,
"strikeout": 1.0028
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "622491",
"profile": {
"available": true,
"pitcher_id": "622491",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 502.0,
"k_percent": 20.0,
"bb_percent": 7.0,
"woba": 0.346,
"xwoba": 0.339,
"sweet_spot_percent": 34.2,
"barrel_batted_rate": 9.8,
"hard_hit_percent": 42.4,
"avg_best_speed": 79.8594,
"avg_hyper_speed": 94.529,
"whiff_percent": 24.8,
"swing_percent": 52.2
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.6747,
"command_and_miss": -0.0386,
"regression_edge": 0.2,
"xwoba_edge": -0.8,
"barrel_edge": -0.6,
"hard_hit_edge": -0.6571,
"whiff_edge": -0.0571,
"bb_edge": 0.55,
"pitch_design_score": 0.1105
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "622491",
"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": 91.82478399959184,
"release_spin_rate": 2186.058161203955,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 91.82478399959184,
"release_spin_rate": 2186.058161203955,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 91.8248,
"release_spin_rate": 2186.0582,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1105,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.789,
"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.359,
"sample_weight": 1.0,
"run_prevention_factor": 1.0305,
"strikeout_factor": 0.9863,
"walk_factor": 0.956,
"homer_factor": 1.0983,
"woba_minus_xwoba": 0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "622491",
"espn_id": 35124,
"player_name": "Luis Castillo",
"team": "CHW",
"role": "pitcher",
"espn_rank": 803,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 803,
"gp_value": 24.0,
"gp_rank": 304,
"gs_value": 21.0,
"gs_rank": 83,
"qs_value": 5.0,
"qs_rank": 105,
"era_value": 5.1864,
"era_rank": null,
"w_value": 4.0,
"w_rank": 176,
"l_value": 10.0,
"l_rank": 13,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 1.0,
"hld_rank": 253,
"ip_value": 118.0,
"ip_rank": 88,
"h_value": 130.0,
"h_rank": 34,
"er_value": 68.0,
"er_rank": 20,
"hr_value": 21.0,
"hr_rank": 22,
"bb_value": 37.0,
"bb_rank": 85,
"k_value": 105.0,
"k_rank": 79,
"k_per_9_value": 8.008475,
"k_per_9_rank": 24,
"whip_value": 1.4152,
"whip_rank": null,
"war_value": -0.84,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0305,
"adjusted": 3
},
"predicted_H": {
"original": 7.0,
"factor": 1.0305,
"adjusted": 7
},
"predicted_BB": {
"original": 2.0,
"factor": 0.956,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0983,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9863,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 4,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 106,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was +2."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
}
],
"provenance": {
"prediction": "output/games/20260828_CHW@MIN.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"
}
} |
| 20260828 | 20260828_CHW@MIN | home | Dean Kremer | Dean Kremer | True | 5.0 | 4.0 | -3 | 4 | 5 | 1 | 5/7 | 2/3 | 3/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.215909090909091,
"WHIP": 1.1761363636363638,
"IP": 58.2,
"games_started": null,
"games_pitched": 11,
"role_avg_IP": 5.333,
"recent_avg_IP": 5.333,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0247,
"sample_weight": 0.868,
"run_prevention_factor": 0.9979,
"strikeout_factor": 1.0258,
"walk_factor": 0.9774,
"homer_factor": 0.9977,
"regression_flag": "neutral",
"k_percent": 24.3,
"bb_percent": 7.9,
"woba": 0.331,
"xwoba": 0.319,
"barrel_percent": 7.4,
"hard_hit_percent": 35.2,
"whiff_percent": 28.1
},
"espn_rank": {
"rank": 365,
"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": 11.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6875,
"prior_weight": 0.3125
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "665152",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 11,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.2,
"ER": 16.0,
"R": 16.0,
"H": 20.0,
"BB": 11.0,
"SO": 24.0,
"HR": 4.0,
"BF": 109.0,
"Pitches": 448.0
},
"per_game": {
"IP": 5.1,
"ER": 3.2,
"R": 3.2,
"H": 4.0,
"BB": 2.2,
"SO": 4.8,
"HR": 0.8,
"BF": 21.8,
"Pitches": 89.6
},
"rates": {
"ERA": 5.4,
"WHIP": 1.1625,
"ER_per_IP": 0.6,
"H_per_IP": 0.75,
"BB_per_IP": 0.4125,
"SO_per_IP": 0.9,
"HR_per_IP": 0.15
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.2,
"ER": 32.0,
"R": 32.0,
"H": 44.0,
"BB": 19.0,
"SO": 49.0,
"HR": 11.0,
"BF": 218.0,
"Pitches": 884.0
},
"per_game": {
"IP": 5.1,
"ER": 3.2,
"R": 3.2,
"H": 4.4,
"BB": 1.9,
"SO": 4.9,
"HR": 1.1,
"BF": 21.8,
"Pitches": 88.4
},
"rates": {
"ERA": 5.3665,
"WHIP": 1.1739,
"ER_per_IP": 0.59627,
"H_per_IP": 0.81988,
"BB_per_IP": 0.35404,
"SO_per_IP": 0.91304,
"HR_per_IP": 0.20497
}
},
"season": {
"games": 11,
"totals": {
"IP": 58.2,
"ER": 34.0,
"R": 36.0,
"H": 50.0,
"BB": 19.0,
"SO": 58.0,
"HR": 14.0,
"BF": 239.0,
"Pitches": 964.0
},
"per_game": {
"IP": 5.1,
"ER": 3.0909,
"R": 3.2727,
"H": 4.5455,
"BB": 1.7273,
"SO": 5.2727,
"HR": 1.2727,
"BF": 21.7273,
"Pitches": 87.6364
},
"rates": {
"ERA": 5.2159,
"WHIP": 1.1761,
"ER_per_IP": 0.57955,
"H_per_IP": 0.85227,
"BB_per_IP": 0.32386,
"SO_per_IP": 0.98864,
"HR_per_IP": 0.23864
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 3.017,
"predicted_H": 4.54,
"predicted_BB": 1.988,
"predicted_SO": 4.953,
"predicted_HR": 0.931,
"predicted_ERA": 5.0907,
"predicted_WHIP": 1.2241
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.482,
"form_weight": 0.518,
"form_reliability": 0.6875,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 11.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6875,
"prior_weight": 0.3125
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 3.017,
"final": 3.4908,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.54,
"final": 4.7617,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.988,
"final": 1.9938,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.953,
"final": 4.0116,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.931,
"final": 0.9643,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.0907,
"final": 5.0907,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2241,
"final": 1.2241,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 53.2,
"ER": 32,
"H": 44,
"BB": 19,
"SO": 49,
"HR": 11,
"ERA": 5.366459627329193,
"WHIP": 1.173913043478261,
"K9": 8.217391304347826,
"HR9": 1.84472049689441,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 1.1042539167082344,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 11.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6875,
"prior_weight": 0.3125
}
},
{
"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": 4,
"predicted_H": 5,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "665152",
"player_name": "Dean Kremer",
"position": "Starter",
"team": "MIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.3333,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 4.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.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": "MIN",
"games": 134,
"wins": 64,
"losses": 70,
"win_pct": 0.4776,
"runs_scored": 615.0,
"runs_allowed": 671.0,
"run_differential": -56.0,
"run_differential_per_game": -0.4179,
"avg_runs_scored": 4.5896,
"avg_runs_allowed": 5.0075,
"offense_index": 1.0285,
"defense_index": 0.8911,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 5.2,
"run_differential": -10.0
},
"available": true,
"quality_score": -0.1055
},
"opponent": {
"team": "CHW",
"games": 133,
"wins": 70,
"losses": 63,
"win_pct": 0.5263,
"runs_scored": 641.0,
"runs_allowed": 597.0,
"run_differential": 44.0,
"run_differential_per_game": 0.3308,
"avg_runs_scored": 4.8195,
"avg_runs_allowed": 4.4887,
"offense_index": 1.08,
"defense_index": 0.9941,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 5.0,
"run_differential": -3.0
},
"available": true,
"quality_score": 0.0631
},
"edges": {
"quality_edge": -0.1686,
"offense_edge": 0.0285,
"opponent_offense_edge": 0.08,
"defense_strength": -0.1089,
"opponent_defense_weakness": 0.0059,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9868,
"run_prevention": 1.0321,
"strikeout": 0.9885
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "665152",
"profile": {
"available": true,
"pitcher_id": "665152",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 217.0,
"k_percent": 24.3,
"bb_percent": 7.9,
"woba": 0.331,
"xwoba": 0.319,
"sweet_spot_percent": 37.0,
"barrel_batted_rate": 7.4,
"hard_hit_percent": 35.2,
"avg_best_speed": 76.0667,
"avg_hyper_speed": 93.4237,
"whiff_percent": 28.1,
"swing_percent": 45.4
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.1504,
"command_and_miss": 0.3579,
"regression_edge": 0.3429,
"xwoba_edge": -0.2286,
"barrel_edge": -0.0667,
"hard_hit_edge": 0.3714,
"whiff_edge": 0.4143,
"bb_edge": 0.325,
"pitch_design_score": -0.1823
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "665152",
"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": 86.5972766860832,
"release_spin_rate": 2072.2900211030874,
"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": 86.5972766860832,
"release_spin_rate": 2072.2900211030874,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 86.5973,
"release_spin_rate": 2072.29,
"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.1823,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.302,
"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.0247,
"sample_weight": 0.868,
"run_prevention_factor": 0.9979,
"strikeout_factor": 1.0258,
"walk_factor": 0.9774,
"homer_factor": 0.9977,
"woba_minus_xwoba": 0.012,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "665152",
"espn_id": 38295,
"player_name": "Dean Kremer",
"team": "MIN",
"role": "pitcher",
"espn_rank": 365,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 365,
"gp_value": 11.0,
"gp_rank": 492,
"gs_value": 11.0,
"gs_rank": 156,
"qs_value": 3.0,
"qs_rank": 133,
"era_value": 5.2159,
"era_rank": null,
"w_value": 2.0,
"w_rank": 294,
"l_value": 4.0,
"l_rank": 164,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 58.2,
"ip_rank": 213,
"h_value": 50.0,
"h_rank": 220,
"er_value": 34.0,
"er_rank": 160,
"hr_value": 14.0,
"hr_rank": 90,
"bb_value": 19.0,
"bb_rank": 287,
"k_value": 58.0,
"k_rank": 213,
"k_per_9_value": 8.897727,
"k_per_9_rank": 27,
"whip_value": 1.1761,
"whip_rank": null,
"war_value": 0.15,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9982,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 0.9982,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9804,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.998,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0224,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 86,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
}
],
"provenance": {
"prediction": "output/games/20260828_CHW@MIN.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"
}
} |
| 20260828 | 20260828_CIN@CHC | away | Rhett Lowder | Rhett Lowder | True | 5.0 | 5.0 | 0 | 2 | 3 | 1 | 5/6 | 3/0 | 3/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.130841121495327,
"WHIP": 1.4672897196261683,
"IP": 107.0,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 5.0,
"recent_avg_IP": 6.0,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.5578,
"sample_weight": 1.0,
"run_prevention_factor": 1.0474,
"strikeout_factor": 0.9389,
"walk_factor": 0.996,
"homer_factor": 1.0715,
"regression_flag": "neutral",
"k_percent": 17.4,
"bb_percent": 9.0,
"woba": 0.339,
"xwoba": 0.346,
"barrel_percent": 9.5,
"hard_hit_percent": 37.6,
"whiff_percent": 19.1
},
"espn_rank": {
"rank": 211,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "695076",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 13.0,
"R": 14.0,
"H": 30.0,
"BB": 6.0,
"SO": 18.0,
"HR": 6.0,
"BF": 125.0,
"Pitches": 470.0
},
"per_game": {
"IP": 6.0,
"ER": 2.6,
"R": 2.8,
"H": 6.0,
"BB": 1.2,
"SO": 3.6,
"HR": 1.2,
"BF": 25.0,
"Pitches": 94.0
},
"rates": {
"ERA": 3.9,
"WHIP": 1.2,
"ER_per_IP": 0.43333,
"H_per_IP": 1.0,
"BB_per_IP": 0.2,
"SO_per_IP": 0.6,
"HR_per_IP": 0.2
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 44.1,
"ER": 24.0,
"R": 25.0,
"H": 47.0,
"BB": 13.0,
"SO": 27.0,
"HR": 7.0,
"BF": 193.0,
"Pitches": 700.0
},
"per_game": {
"IP": 4.1,
"ER": 2.4,
"R": 2.5,
"H": 4.7,
"BB": 1.3,
"SO": 2.7,
"HR": 0.7,
"BF": 19.3,
"Pitches": 70.0
},
"rates": {
"ERA": 4.8722,
"WHIP": 1.3534,
"ER_per_IP": 0.54135,
"H_per_IP": 1.06015,
"BB_per_IP": 0.29323,
"SO_per_IP": 0.60902,
"HR_per_IP": 0.15789
}
},
"season": {
"games": 23,
"totals": {
"IP": 107.0,
"ER": 61.0,
"R": 63.0,
"H": 114.0,
"BB": 43.0,
"SO": 83.0,
"HR": 15.0,
"BF": 478.0,
"Pitches": 1794.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6522,
"R": 2.7391,
"H": 4.9565,
"BB": 1.8696,
"SO": 3.6087,
"HR": 0.6522,
"BF": 20.7826,
"Pitches": 78.0
},
"rates": {
"ERA": 5.1308,
"WHIP": 1.4673,
"ER_per_IP": 0.57009,
"H_per_IP": 1.06542,
"BB_per_IP": 0.40187,
"SO_per_IP": 0.7757,
"HR_per_IP": 0.14019
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.616,
"predicted_H": 5.366,
"predicted_BB": 1.521,
"predicted_SO": 3.631,
"predicted_HR": 0.884,
"predicted_ERA": 4.4919,
"predicted_WHIP": 1.3139
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4255,
"form_weight": 0.5745,
"form_reliability": 0.8214,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.616,
"final": 2.3539,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.366,
"final": 5.2103,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.521,
"final": 2.1503,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 3.631,
"final": 3.3625,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.884,
"final": 0.5079,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4919,
"final": 4.4919,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3139,
"final": 1.3139,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 44.1,
"ER": 24,
"H": 47,
"BB": 13,
"SO": 27,
"HR": 7,
"ERA": 4.87218045112782,
"WHIP": 1.3533834586466165,
"K9": 5.481203007518797,
"HR9": 1.4210526315789473,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 1.0531342697647887,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_BB": 3.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 5,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "695076",
"player_name": "Rhett Lowder",
"position": "Starter",
"team": "CIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 3.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": 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.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 3.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": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 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.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CIN",
"games": 134,
"wins": 63,
"losses": 71,
"win_pct": 0.4701,
"runs_scored": 548.0,
"runs_allowed": 648.0,
"run_differential": -100.0,
"run_differential_per_game": -0.7463,
"avg_runs_scored": 4.0896,
"avg_runs_allowed": 4.8358,
"offense_index": 0.9113,
"defense_index": 0.928,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 5.8,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.1519
},
"opponent": {
"team": "CHC",
"games": 134,
"wins": 76,
"losses": 58,
"win_pct": 0.5672,
"runs_scored": 695.0,
"runs_allowed": 576.0,
"run_differential": 119.0,
"run_differential_per_game": 0.8881,
"avg_runs_scored": 5.1866,
"avg_runs_allowed": 4.2985,
"offense_index": 1.1557,
"defense_index": 1.044,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 4.2,
"run_differential": 12.0
},
"available": true,
"quality_score": 0.131
},
"edges": {
"quality_edge": -0.2829,
"offense_edge": -0.0887,
"opponent_offense_edge": 0.1557,
"defense_strength": -0.072,
"opponent_defense_weakness": -0.044,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9803,
"run_prevention": 1.0463,
"strikeout": 0.9791
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "695076",
"profile": {
"available": true,
"pitcher_id": "695076",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 441.0,
"k_percent": 17.4,
"bb_percent": 9.0,
"woba": 0.339,
"xwoba": 0.346,
"sweet_spot_percent": 36.1,
"barrel_batted_rate": 9.5,
"hard_hit_percent": 37.6,
"avg_best_speed": 80.1735,
"avg_hyper_speed": 94.1902,
"whiff_percent": 19.1,
"swing_percent": 45.0
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.6808,
"command_and_miss": -0.5907,
"regression_edge": -0.2,
"xwoba_edge": -1.0,
"barrel_edge": -0.5333,
"hard_hit_edge": 0.0286,
"whiff_edge": -0.8714,
"bb_edge": 0.05,
"pitch_design_score": -0.0372
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "695076",
"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": 89.18784850252824,
"release_spin_rate": 2345.0409152257157,
"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": 89.18784850252824,
"release_spin_rate": 2345.0409152257157,
"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.1878,
"release_spin_rate": 2345.0409,
"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.0372,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2658,
"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.5578,
"sample_weight": 1.0,
"run_prevention_factor": 1.0474,
"strikeout_factor": 0.9389,
"walk_factor": 0.996,
"homer_factor": 1.0715,
"woba_minus_xwoba": -0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "695076",
"espn_id": 4758873,
"player_name": "Rhett Lowder",
"team": "CIN",
"role": "pitcher",
"espn_rank": 211,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 211,
"gp_value": 23.0,
"gp_rank": 321,
"gs_value": 20.0,
"gs_rank": 89,
"qs_value": 6.0,
"qs_rank": 84,
"era_value": 5.1308,
"era_rank": null,
"w_value": 5.0,
"w_rank": 125,
"l_value": 8.0,
"l_rank": 41,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 107.0,
"ip_rank": 99,
"h_value": 114.0,
"h_rank": 75,
"er_value": 61.0,
"er_rank": 48,
"hr_value": 15.0,
"hr_rank": 75,
"bb_value": 43.0,
"bb_rank": 53,
"k_value": 83.0,
"k_rank": 128,
"k_per_9_value": 6.981308,
"k_per_9_rank": 34,
"whip_value": 1.4672,
"whip_rank": null,
"war_value": 0.71,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0474,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0474,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.996,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0715,
"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": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 102,
"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": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
}
],
"provenance": {
"prediction": "output/games/20260828_CIN@CHC.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260828 | 20260828_CIN@CHC | home | David Peterson | David Peterson | True | 4.2 | 5.0 | 1 | 4 | 2 | -2 | 8/6 | 1/3 | 5/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.171830985915493,
"WHIP": 1.504225352112676,
"IP": 118.1,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 5.078,
"recent_avg_IP": 5.6,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3377,
"sample_weight": 1.0,
"run_prevention_factor": 1.0287,
"strikeout_factor": 0.968,
"walk_factor": 1.0,
"homer_factor": 1.0301,
"regression_flag": "neutral",
"k_percent": 19.4,
"bb_percent": 9.2,
"woba": 0.332,
"xwoba": 0.338,
"barrel_percent": 6.4,
"hard_hit_percent": 41.2,
"whiff_percent": 22.2
},
"espn_rank": {
"rank": 795,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "656849",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.2,
"ER": 7.0,
"R": 9.0,
"H": 25.0,
"BB": 9.0,
"SO": 26.0,
"HR": 2.0,
"BF": 104.0,
"Pitches": 396.0
},
"per_game": {
"IP": 4.2,
"ER": 1.4,
"R": 1.8,
"H": 5.0,
"BB": 1.8,
"SO": 5.2,
"HR": 0.4,
"BF": 20.8,
"Pitches": 79.2
},
"rates": {
"ERA": 2.662,
"WHIP": 1.4366,
"ER_per_IP": 0.29577,
"H_per_IP": 1.05634,
"BB_per_IP": 0.38028,
"SO_per_IP": 1.09859,
"HR_per_IP": 0.08451
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.1,
"ER": 22.0,
"R": 24.0,
"H": 47.0,
"BB": 19.0,
"SO": 40.0,
"HR": 6.0,
"BF": 213.0,
"Pitches": 813.0
},
"per_game": {
"IP": 5.0,
"ER": 2.2,
"R": 2.4,
"H": 4.7,
"BB": 1.9,
"SO": 4.0,
"HR": 0.6,
"BF": 21.3,
"Pitches": 81.3
},
"rates": {
"ERA": 3.9338,
"WHIP": 1.3113,
"ER_per_IP": 0.43709,
"H_per_IP": 0.93377,
"BB_per_IP": 0.37748,
"SO_per_IP": 0.7947,
"HR_per_IP": 0.11921
}
},
"season": {
"games": 26,
"totals": {
"IP": 118.1,
"ER": 68.0,
"R": 75.0,
"H": 129.0,
"BB": 49.0,
"SO": 103.0,
"HR": 12.0,
"BF": 532.0,
"Pitches": 1950.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6154,
"R": 2.8846,
"H": 4.9615,
"BB": 1.8846,
"SO": 3.9615,
"HR": 0.4615,
"BF": 20.4615,
"Pitches": 75.0
},
"rates": {
"ERA": 5.1718,
"WHIP": 1.5042,
"ER_per_IP": 0.57465,
"H_per_IP": 1.09014,
"BB_per_IP": 0.41408,
"SO_per_IP": 0.87042,
"HR_per_IP": 0.10141
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.033,
"predicted_H": 4.935,
"predicted_BB": 1.868,
"predicted_SO": 4.609,
"predicted_HR": 0.524,
"predicted_ERA": 3.7555,
"predicted_WHIP": 1.3963
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4181,
"form_weight": 0.5819,
"form_reliability": 0.8387,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.0,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.033,
"final": 2.8555,
"source": "model_form_blend"
},
"predicted_H": {
"model": 8.0,
"form": 4.935,
"final": 6.2166,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.868,
"final": 1.505,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.609,
"final": 4.7725,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.524,
"final": 0.3049,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.7555,
"final": 3.7555,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3963,
"final": 1.3963,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 50.1,
"ER": 22,
"H": 47,
"BB": 19,
"SO": 40,
"HR": 6,
"ERA": 3.9337748344370866,
"WHIP": 1.3112582781456954,
"K9": 7.152317880794703,
"HR9": 1.0728476821192054,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.9465105083745583,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
}
},
{
"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": 4,
"predicted_H": 8,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "656849",
"player_name": "David Peterson",
"position": "Starter",
"team": "CHC",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 8.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 4.2,
"delta": -1.1333,
"percent_delta": -0.2125,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 4.2,
"delta": -1.1333,
"percent_delta": -0.2125,
"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": 8.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 4.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.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": 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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 4.2,
"delta": -1.1333,
"percent_delta": -0.2125,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 4.2,
"delta": -1.1333,
"percent_delta": -0.2125,
"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": "CHC",
"games": 134,
"wins": 76,
"losses": 58,
"win_pct": 0.5672,
"runs_scored": 695.0,
"runs_allowed": 576.0,
"run_differential": 119.0,
"run_differential_per_game": 0.8881,
"avg_runs_scored": 5.1866,
"avg_runs_allowed": 4.2985,
"offense_index": 1.1557,
"defense_index": 1.044,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 4.2,
"run_differential": 12.0
},
"available": true,
"quality_score": 0.131
},
"opponent": {
"team": "CIN",
"games": 134,
"wins": 63,
"losses": 71,
"win_pct": 0.4701,
"runs_scored": 548.0,
"runs_allowed": 648.0,
"run_differential": -100.0,
"run_differential_per_game": -0.7463,
"avg_runs_scored": 4.0896,
"avg_runs_allowed": 4.8358,
"offense_index": 0.9113,
"defense_index": 0.928,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 5.8,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.1519
},
"edges": {
"quality_edge": 0.2829,
"offense_edge": 0.1557,
"opponent_offense_edge": -0.0887,
"defense_strength": 0.044,
"opponent_defense_weakness": 0.072,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0162,
"run_prevention": 0.9673,
"strikeout": 1.0156
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "656849",
"profile": {
"available": true,
"pitcher_id": "656849",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 503.0,
"k_percent": 19.4,
"bb_percent": 9.2,
"woba": 0.332,
"xwoba": 0.338,
"sweet_spot_percent": 33.8,
"barrel_batted_rate": 6.4,
"hard_hit_percent": 41.2,
"avg_best_speed": 78.2137,
"avg_hyper_speed": 94.4862,
"whiff_percent": 22.2,
"swing_percent": 46.9
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.4173,
"command_and_miss": -0.3171,
"regression_edge": -0.1714,
"xwoba_edge": -0.7714,
"barrel_edge": 0.1556,
"hard_hit_edge": -0.4857,
"whiff_edge": -0.4286,
"bb_edge": 0.0,
"pitch_design_score": -0.0545
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "656849",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 77,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 77,
"pitch_usage": 0.0,
"release_speed": 88.87843836354706,
"release_spin_rate": 2125.964579008083,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 77,
"pitch_usage": 0.0,
"release_speed": 88.87843836354706,
"release_spin_rate": 2125.964579008083,
"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.8784,
"release_spin_rate": 2125.9646,
"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.0545,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.3895,
"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.3377,
"sample_weight": 1.0,
"run_prevention_factor": 1.0287,
"strikeout_factor": 0.968,
"walk_factor": 1.0,
"homer_factor": 1.0301,
"woba_minus_xwoba": -0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "656849",
"espn_id": 40921,
"player_name": "David Peterson",
"team": "CHC",
"role": "pitcher",
"espn_rank": 795,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 795,
"gp_value": 26.0,
"gp_rank": 249,
"gs_value": 17.0,
"gs_rank": 110,
"qs_value": 3.0,
"qs_rank": 133,
"era_value": 5.1718,
"era_rank": null,
"w_value": 7.0,
"w_rank": 74,
"l_value": 7.0,
"l_rank": 70,
"sv_value": 1.0,
"sv_rank": 130,
"hld_value": 1.0,
"hld_rank": 253,
"ip_value": 118.1,
"ip_rank": 83,
"h_value": 129.0,
"h_rank": 38,
"er_value": 68.0,
"er_rank": 20,
"hr_value": 12.0,
"hr_rank": 121,
"bb_value": 49.0,
"bb_rank": 28,
"k_value": 103.0,
"k_rank": 83,
"k_per_9_value": 7.8338027,
"k_per_9_rank": 27,
"whip_value": 1.5042,
"whip_rank": null,
"war_value": -0.79,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0287,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 1.0287,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0301,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.968,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 8,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 99,
"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/20260828_CIN@CHC.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260828 | 20260828_COL@ATL | away | Tomoyuki Sugano | Tomoyuki Sugano | True | 5.1 | 4.0 | -4 | 8 | 6 | -2 | 7/10 | 4/1 | 5/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.956164383561644,
"WHIP": 1.3150684931506849,
"IP": 121.2,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 5.29,
"recent_avg_IP": 5.133,
"last_start_IP": 3.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -1.1563,
"sample_weight": 1.0,
"run_prevention_factor": 1.0983,
"strikeout_factor": 0.9126,
"walk_factor": 0.924,
"homer_factor": 1.21,
"regression_flag": "negative_pitcher_regression",
"k_percent": 13.8,
"bb_percent": 5.4,
"woba": 0.36,
"xwoba": 0.395,
"barrel_percent": 13.0,
"hard_hit_percent": 43.6,
"whiff_percent": 18.1
},
"espn_rank": {
"rank": 102,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "608372",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.2,
"ER": 17.0,
"R": 18.0,
"H": 32.0,
"BB": 4.0,
"SO": 15.0,
"HR": 6.0,
"BF": 111.0,
"Pitches": 442.0
},
"per_game": {
"IP": 5.0,
"ER": 3.4,
"R": 3.6,
"H": 6.4,
"BB": 0.8,
"SO": 3.0,
"HR": 1.2,
"BF": 22.2,
"Pitches": 88.4
},
"rates": {
"ERA": 5.961,
"WHIP": 1.4026,
"ER_per_IP": 0.66234,
"H_per_IP": 1.24675,
"BB_per_IP": 0.15584,
"SO_per_IP": 0.58442,
"HR_per_IP": 0.23377
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.1,
"ER": 36.0,
"R": 39.0,
"H": 64.0,
"BB": 8.0,
"SO": 32.0,
"HR": 14.0,
"BF": 229.0,
"Pitches": 879.0
},
"per_game": {
"IP": 5.1,
"ER": 3.6,
"R": 3.9,
"H": 6.4,
"BB": 0.8,
"SO": 3.2,
"HR": 1.4,
"BF": 22.9,
"Pitches": 87.9
},
"rates": {
"ERA": 6.075,
"WHIP": 1.35,
"ER_per_IP": 0.675,
"H_per_IP": 1.2,
"BB_per_IP": 0.15,
"SO_per_IP": 0.6,
"HR_per_IP": 0.2625
}
},
"season": {
"games": 23,
"totals": {
"IP": 121.2,
"ER": 67.0,
"R": 70.0,
"H": 132.0,
"BB": 28.0,
"SO": 71.0,
"HR": 26.0,
"BF": 516.0,
"Pitches": 1992.0
},
"per_game": {
"IP": 5.1,
"ER": 2.913,
"R": 3.0435,
"H": 5.7391,
"BB": 1.2174,
"SO": 3.087,
"HR": 1.1304,
"BF": 22.4348,
"Pitches": 86.6087
},
"rates": {
"ERA": 4.9562,
"WHIP": 1.3151,
"ER_per_IP": 0.55068,
"H_per_IP": 1.08493,
"BB_per_IP": 0.23014,
"SO_per_IP": 0.58356,
"HR_per_IP": 0.2137
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 3.225,
"predicted_H": 6.035,
"predicted_BB": 1.065,
"predicted_SO": 3.401,
"predicted_HR": 1.163,
"predicted_ERA": 5.5708,
"predicted_WHIP": 1.3628
}
},
"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.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 8.0,
"form": 3.225,
"final": 5.2566,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 6.035,
"final": 6.4456,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.065,
"final": 2.3137,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 3.401,
"final": 3.2304,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 1.163,
"final": 1.5191,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.5708,
"final": 5.5708,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3628,
"final": 1.3628,
"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": 36,
"H": 64,
"BB": 8,
"SO": 32,
"HR": 14,
"ERA": 6.075,
"WHIP": 1.35,
"K9": 5.4,
"HR9": 2.3625000000000003,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-23T00:00:00"
},
"recent_form_boost": 1.1883668825467437,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 8.0,
"predicted_H": 7.0,
"predicted_BB": 4.0,
"predicted_SO": 3.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "608372",
"player_name": "Tomoyuki Sugano",
"position": "Starter",
"team": "COL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 8.0,
"predicted_H": 7.0,
"predicted_HR": 2.0,
"predicted_IP": 5.3333,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 8.0,
"predicted_H": 7.0,
"predicted_HR": 2.0,
"predicted_IP": 5.1,
"predicted_R": 8.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": 8.0,
"after": 8.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": 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.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"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": 8.0,
"after": 8.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": 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.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "COL",
"games": 134,
"wins": 52,
"losses": 82,
"win_pct": 0.3881,
"runs_scored": 637.0,
"runs_allowed": 775.0,
"run_differential": -138.0,
"run_differential_per_game": -1.0299,
"avg_runs_scored": 4.7537,
"avg_runs_allowed": 5.7836,
"offense_index": 1.0638,
"defense_index": 0.7726,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 6.6,
"run_differential": -25.0
},
"available": true,
"quality_score": -0.3269
},
"opponent": {
"team": "ATL",
"games": 134,
"wins": 79,
"losses": 55,
"win_pct": 0.5896,
"runs_scored": 625.0,
"runs_allowed": 512.0,
"run_differential": 113.0,
"run_differential_per_game": 0.8433,
"avg_runs_scored": 4.6642,
"avg_runs_allowed": 3.8209,
"offense_index": 1.0438,
"defense_index": 1.1695,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 2.6,
"avg_runs_allowed": 3.0,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.18
},
"edges": {
"quality_edge": -0.5069,
"offense_edge": 0.0638,
"opponent_offense_edge": 0.0438,
"defense_strength": -0.2274,
"opponent_defense_weakness": -0.1695,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9712,
"run_prevention": 1.0551,
"strikeout": 0.9813
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "608372",
"profile": {
"available": true,
"pitcher_id": "608372",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 487.0,
"k_percent": 13.8,
"bb_percent": 5.4,
"woba": 0.36,
"xwoba": 0.395,
"sweet_spot_percent": 37.8,
"barrel_batted_rate": 13.0,
"hard_hit_percent": 43.6,
"avg_best_speed": 80.4348,
"avg_hyper_speed": 95.1656,
"whiff_percent": 18.1,
"swing_percent": 46.2
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -1.5523,
"command_and_miss": -0.6921,
"regression_edge": -1.0,
"xwoba_edge": -2.4,
"barrel_edge": -1.3111,
"hard_hit_edge": -0.8286,
"whiff_edge": -1.0143,
"bb_edge": 0.95,
"pitch_design_score": -0.0885
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "608372",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 88,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 88.27152055516693,
"release_spin_rate": 2295.6362856997916,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 88.27152055516693,
"release_spin_rate": 2295.6362856997916,
"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.2715,
"release_spin_rate": 2295.6363,
"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.6323,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -1.1563,
"sample_weight": 1.0,
"run_prevention_factor": 1.0983,
"strikeout_factor": 0.9126,
"walk_factor": 0.924,
"homer_factor": 1.21,
"woba_minus_xwoba": -0.035,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "608372",
"espn_id": 4142423,
"player_name": "Tomoyuki Sugano",
"team": "COL",
"role": "pitcher",
"espn_rank": 102,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 102,
"gp_value": 23.0,
"gp_rank": 321,
"gs_value": 23.0,
"gs_rank": 66,
"qs_value": 7.0,
"qs_rank": 73,
"era_value": 4.9561,
"era_rank": null,
"w_value": 12.0,
"w_rank": 13,
"l_value": 7.0,
"l_rank": 70,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 121.2,
"ip_rank": 80,
"h_value": 132.0,
"h_rank": 30,
"er_value": 67.0,
"er_rank": 24,
"hr_value": 26.0,
"hr_rank": 7,
"bb_value": 28.0,
"bb_rank": 162,
"k_value": 71.0,
"k_rank": 160,
"k_per_9_value": 5.2520547,
"k_per_9_rank": 54,
"whip_value": 1.315,
"whip_rank": null,
"war_value": 1.59,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0983,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0983,
"adjusted": 7
},
"predicted_BB": {
"original": 1.0,
"factor": 0.924,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.2,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9126,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 7,
"predicted_R": 8,
"predicted_ER": 8,
"predicted_BB": 4,
"predicted_SO": 5,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 27,
"Pitches": 109,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
}
],
"provenance": {
"prediction": "output/games/20260828_COL@ATL.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"
}
} |
| 20260828 | 20260828_COL@ATL | home | Grant Holmes | Grant Holmes | True | 5.0 | 5.0 | 0 | 3 | 3 | 0 | 5/8 | 2/1 | 2/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.795755968169761,
"WHIP": 1.3527851458885942,
"IP": 125.2,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 4.867,
"recent_avg_IP": 5.267,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.4078,
"sample_weight": 1.0,
"run_prevention_factor": 1.0347,
"strikeout_factor": 0.9949,
"walk_factor": 1.02,
"homer_factor": 1.0869,
"regression_flag": "neutral",
"k_percent": 18.9,
"bb_percent": 10.2,
"woba": 0.316,
"xwoba": 0.337,
"barrel_percent": 8.9,
"hard_hit_percent": 43.5,
"whiff_percent": 27.4
},
"espn_rank": {
"rank": 64,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "656550",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.1,
"ER": 9.0,
"R": 9.0,
"H": 20.0,
"BB": 11.0,
"SO": 17.0,
"HR": 4.0,
"BF": 107.0,
"Pitches": 377.0
},
"per_game": {
"IP": 5.1,
"ER": 1.8,
"R": 1.8,
"H": 4.0,
"BB": 2.2,
"SO": 3.4,
"HR": 0.8,
"BF": 21.4,
"Pitches": 75.4
},
"rates": {
"ERA": 3.0759,
"WHIP": 1.1772,
"ER_per_IP": 0.34177,
"H_per_IP": 0.75949,
"BB_per_IP": 0.41772,
"SO_per_IP": 0.64557,
"HR_per_IP": 0.1519
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.1,
"ER": 16.0,
"R": 17.0,
"H": 42.0,
"BB": 17.0,
"SO": 35.0,
"HR": 5.0,
"BF": 208.0,
"Pitches": 761.0
},
"per_game": {
"IP": 5.0,
"ER": 1.6,
"R": 1.7,
"H": 4.2,
"BB": 1.7,
"SO": 3.5,
"HR": 0.5,
"BF": 20.8,
"Pitches": 76.1
},
"rates": {
"ERA": 2.8609,
"WHIP": 1.1722,
"ER_per_IP": 0.31788,
"H_per_IP": 0.83444,
"BB_per_IP": 0.33775,
"SO_per_IP": 0.69536,
"HR_per_IP": 0.09934
}
},
"season": {
"games": 26,
"totals": {
"IP": 125.2,
"ER": 53.0,
"R": 55.0,
"H": 113.0,
"BB": 57.0,
"SO": 102.0,
"HR": 19.0,
"BF": 542.0,
"Pitches": 2026.0
},
"per_game": {
"IP": 4.2,
"ER": 2.0385,
"R": 2.1154,
"H": 4.3462,
"BB": 2.1923,
"SO": 3.9231,
"HR": 0.7308,
"BF": 20.8462,
"Pitches": 77.9231
},
"rates": {
"ERA": 3.7958,
"WHIP": 1.3528,
"ER_per_IP": 0.42175,
"H_per_IP": 0.8992,
"BB_per_IP": 0.45358,
"SO_per_IP": 0.81167,
"HR_per_IP": 0.15119
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 1.896,
"predicted_H": 4.257,
"predicted_BB": 1.99,
"predicted_SO": 3.731,
"predicted_HR": 0.687,
"predicted_ERA": 3.366,
"predicted_WHIP": 1.2322
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4181,
"form_weight": 0.5819,
"form_reliability": 0.8387,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.896,
"final": 2.3576,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.257,
"final": 4.5677,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.99,
"final": 1.9942,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 3.731,
"final": 3.0072,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.687,
"final": 0.8179,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.366,
"final": 3.366,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2322,
"final": 1.2322,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 50.1,
"ER": 16,
"H": 42,
"BB": 17,
"SO": 35,
"HR": 5,
"ERA": 2.860927152317881,
"WHIP": 1.1721854304635764,
"K9": 6.258278145695365,
"HR9": 0.8940397350993379,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-20T00:00:00"
},
"recent_form_boost": 0.8223383229440948,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 2.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "656550",
"player_name": "Grant Holmes",
"position": "Starter",
"team": "ATL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.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": 2.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ATL",
"games": 134,
"wins": 79,
"losses": 55,
"win_pct": 0.5896,
"runs_scored": 625.0,
"runs_allowed": 512.0,
"run_differential": 113.0,
"run_differential_per_game": 0.8433,
"avg_runs_scored": 4.6642,
"avg_runs_allowed": 3.8209,
"offense_index": 1.0438,
"defense_index": 1.1695,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 2.6,
"avg_runs_allowed": 3.0,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.18
},
"opponent": {
"team": "COL",
"games": 134,
"wins": 52,
"losses": 82,
"win_pct": 0.3881,
"runs_scored": 637.0,
"runs_allowed": 775.0,
"run_differential": -138.0,
"run_differential_per_game": -1.0299,
"avg_runs_scored": 4.7537,
"avg_runs_allowed": 5.7836,
"offense_index": 1.0638,
"defense_index": 0.7726,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 6.6,
"run_differential": -25.0
},
"available": true,
"quality_score": -0.3269
},
"edges": {
"quality_edge": 0.5069,
"offense_edge": 0.0438,
"opponent_offense_edge": 0.0638,
"defense_strength": 0.1695,
"opponent_defense_weakness": 0.2274,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0228,
"run_prevention": 0.9679,
"strikeout": 1.0101
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "656550",
"profile": {
"available": true,
"pitcher_id": "656550",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 505.0,
"k_percent": 18.9,
"bb_percent": 10.2,
"woba": 0.316,
"xwoba": 0.337,
"sweet_spot_percent": 34.4,
"barrel_batted_rate": 8.9,
"hard_hit_percent": 43.5,
"avg_best_speed": 82.0172,
"avg_hyper_speed": 94.7258,
"whiff_percent": 27.4,
"swing_percent": 48.2
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.5529,
"command_and_miss": -0.1393,
"regression_edge": -0.6,
"xwoba_edge": -0.7429,
"barrel_edge": -0.4,
"hard_hit_edge": -0.8143,
"whiff_edge": 0.3143,
"bb_edge": -0.25,
"pitch_design_score": -0.0239
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "656550",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 74,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 74,
"pitch_usage": 0.0,
"release_speed": 89.4253815918858,
"release_spin_rate": 2458.5893886602285,
"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": 74,
"pitch_usage": 0.0,
"release_speed": 89.4253815918858,
"release_spin_rate": 2458.5893886602285,
"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.4254,
"release_spin_rate": 2458.5894,
"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.0239,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.1707,
"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.4078,
"sample_weight": 1.0,
"run_prevention_factor": 1.0347,
"strikeout_factor": 0.9949,
"walk_factor": 1.02,
"homer_factor": 1.0869,
"woba_minus_xwoba": -0.021,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "656550",
"espn_id": 33840,
"player_name": "Grant Holmes",
"team": "ATL",
"role": "pitcher",
"espn_rank": 64,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 64,
"gp_value": 25.0,
"gp_rank": 281,
"gs_value": 24.0,
"gs_rank": 55,
"qs_value": 8.0,
"qs_rank": 71,
"era_value": 3.6388,
"era_rank": null,
"w_value": 8.0,
"w_rank": 49,
"l_value": 5.0,
"l_rank": 127,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 123.2,
"ip_rank": 76,
"h_value": 109.0,
"h_rank": 86,
"er_value": 50.0,
"er_rank": 87,
"hr_value": 19.0,
"hr_rank": 32,
"bb_value": 54.0,
"bb_rank": 17,
"k_value": 100.0,
"k_rank": 88,
"k_per_9_value": 7.277628,
"k_per_9_rank": 31,
"whip_value": 1.318,
"whip_rank": null,
"war_value": 2.1,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0347,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0347,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.02,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0869,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9949,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 2,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 86,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260828_COL@ATL.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"
}
} |
| 20260828 | 20260828_HOU@NYM | away | Hunter Brown | Hunter Brown | True | 5.1 | 6.2 | 4 | 3 | 1 | -2 | 6/5 | 2/1 | 6/10 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.5112107623318387,
"WHIP": 1.3318385650224216,
"IP": 74.1,
"games_started": null,
"games_pitched": 14,
"role_avg_IP": 5.31,
"recent_avg_IP": 5.467,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2033,
"sample_weight": 1.0,
"run_prevention_factor": 0.9827,
"strikeout_factor": 1.0103,
"walk_factor": 1.09,
"homer_factor": 0.9698,
"regression_flag": "neutral",
"k_percent": 24.1,
"bb_percent": 13.7,
"woba": 0.309,
"xwoba": 0.301,
"barrel_percent": 6.3,
"hard_hit_percent": 36.5,
"whiff_percent": 24.9
},
"espn_rank": {
"rank": 110,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "686613",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 14,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.1,
"ER": 11.0,
"R": 11.0,
"H": 24.0,
"BB": 15.0,
"SO": 26.0,
"HR": 5.0,
"BF": 115.0,
"Pitches": 477.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2,
"R": 2.2,
"H": 4.8,
"BB": 3.0,
"SO": 5.2,
"HR": 1.0,
"BF": 23.0,
"Pitches": 95.4
},
"rates": {
"ERA": 3.622,
"WHIP": 1.4268,
"ER_per_IP": 0.40244,
"H_per_IP": 0.87805,
"BB_per_IP": 0.54878,
"SO_per_IP": 0.95122,
"HR_per_IP": 0.18293
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.0,
"ER": 26.0,
"R": 28.0,
"H": 44.0,
"BB": 32.0,
"SO": 48.0,
"HR": 9.0,
"BF": 234.0,
"Pitches": 942.0
},
"per_game": {
"IP": 5.1,
"ER": 2.6,
"R": 2.8,
"H": 4.4,
"BB": 3.2,
"SO": 4.8,
"HR": 0.9,
"BF": 23.4,
"Pitches": 94.2
},
"rates": {
"ERA": 4.2545,
"WHIP": 1.3818,
"ER_per_IP": 0.47273,
"H_per_IP": 0.8,
"BB_per_IP": 0.58182,
"SO_per_IP": 0.87273,
"HR_per_IP": 0.16364
}
},
"season": {
"games": 14,
"totals": {
"IP": 74.1,
"ER": 29.0,
"R": 31.0,
"H": 56.0,
"BB": 43.0,
"SO": 76.0,
"HR": 10.0,
"BF": 315.0,
"Pitches": 1299.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0714,
"R": 2.2143,
"H": 4.0,
"BB": 3.0714,
"SO": 5.4286,
"HR": 0.7143,
"BF": 22.5,
"Pitches": 92.7857
},
"rates": {
"ERA": 3.5112,
"WHIP": 1.3318,
"ER_per_IP": 0.39013,
"H_per_IP": 0.75336,
"BB_per_IP": 0.57848,
"SO_per_IP": 1.02242,
"HR_per_IP": 0.13453
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.373,
"predicted_H": 4.614,
"predicted_BB": 2.744,
"predicted_SO": 5.009,
"predicted_HR": 0.861,
"predicted_ERA": 4.0044,
"predicted_WHIP": 1.3796
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4612,
"form_weight": 0.5388,
"form_reliability": 0.7368,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.373,
"final": 2.6622,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.614,
"final": 5.2532,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.744,
"final": 2.4009,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 5.009,
"final": 5.4661,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.861,
"final": 0.4639,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.0044,
"final": 4.0044,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3796,
"final": 1.3796,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.0,
"ER": 26,
"H": 44,
"BB": 32,
"SO": 48,
"HR": 9,
"ERA": 4.254545454545455,
"WHIP": 1.3818181818181818,
"K9": 7.8545454545454545,
"HR9": 1.4727272727272727,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.984361200728562,
"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": 2.0,
"predicted_SO": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "686613",
"player_name": "Hunter Brown",
"position": "Starter",
"team": "HOU",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "HOU",
"games": 134,
"wins": 67,
"losses": 67,
"win_pct": 0.5,
"runs_scored": 613.0,
"runs_allowed": 657.0,
"run_differential": -44.0,
"run_differential_per_game": -0.3284,
"avg_runs_scored": 4.5746,
"avg_runs_allowed": 4.903,
"offense_index": 1.0237,
"defense_index": 0.9114,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 5.4,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.0754
},
"opponent": {
"team": "NYM",
"games": 134,
"wins": 60,
"losses": 74,
"win_pct": 0.4478,
"runs_scored": 552.0,
"runs_allowed": 604.0,
"run_differential": -52.0,
"run_differential_per_game": -0.3881,
"avg_runs_scored": 4.1194,
"avg_runs_allowed": 4.5075,
"offense_index": 0.9218,
"defense_index": 0.9914,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 4.2,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.0921
},
"edges": {
"quality_edge": 0.0167,
"offense_edge": 0.0237,
"opponent_offense_edge": -0.0782,
"defense_strength": -0.0886,
"opponent_defense_weakness": 0.0086,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0011,
"run_prevention": 0.9955,
"strikeout": 1.0068
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "686613",
"profile": {
"available": true,
"pitcher_id": "686613",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 291.0,
"k_percent": 24.1,
"bb_percent": 13.7,
"woba": 0.309,
"xwoba": 0.301,
"sweet_spot_percent": 28.1,
"barrel_batted_rate": 6.3,
"hard_hit_percent": 36.5,
"avg_best_speed": 73.0056,
"avg_hyper_speed": 93.2371,
"whiff_percent": 24.9,
"swing_percent": 41.4
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.3515,
"command_and_miss": -0.105,
"regression_edge": 0.2286,
"xwoba_edge": 0.2857,
"barrel_edge": 0.1778,
"hard_hit_edge": 0.1857,
"whiff_edge": -0.0429,
"bb_edge": -1.125,
"pitch_design_score": 0.1369
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "686613",
"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.29605869429095,
"release_spin_rate": 2200.9095575606843,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 92.29605869429095,
"release_spin_rate": 2200.9095575606843,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 92.2961,
"release_spin_rate": 2200.9096,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1369,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.9775,
"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.2033,
"sample_weight": 1.0,
"run_prevention_factor": 0.9827,
"strikeout_factor": 1.0103,
"walk_factor": 1.09,
"homer_factor": 0.9698,
"woba_minus_xwoba": 0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "686613",
"espn_id": 4717803,
"player_name": "Hunter Brown",
"team": "HOU",
"role": "pitcher",
"espn_rank": 110,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 110,
"gp_value": 14.0,
"gp_rank": 455,
"gs_value": 14.0,
"gs_rank": 137,
"qs_value": 5.0,
"qs_rank": 105,
"era_value": 3.5112,
"era_rank": null,
"w_value": 3.0,
"w_rank": 229,
"l_value": 3.0,
"l_rank": 220,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 74.1,
"ip_rank": 158,
"h_value": 56.0,
"h_rank": 189,
"er_value": 29.0,
"er_rank": 182,
"hr_value": 10.0,
"hr_rank": 146,
"bb_value": 43.0,
"bb_rank": 53,
"k_value": 76.0,
"k_rank": 143,
"k_per_9_value": 9.201794,
"k_per_9_rank": 24,
"whip_value": 1.3318,
"whip_rank": null,
"war_value": 1.49,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9827,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9827,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.09,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9698,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0103,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 26,
"Pitches": 105,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260828_HOU@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"
}
} |
| 20260828 | 20260828_HOU@NYM | home | Christian Scott | Christian Scott | True | 5.2 | 5.1 | -1 | 2 | 3 | 1 | 2/1 | 0/5 | 7/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.7276119402985075,
"WHIP": 1.3208955223880599,
"IP": 89.1,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 4.702,
"recent_avg_IP": 5.2,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1504,
"sample_weight": 1.0,
"run_prevention_factor": 0.9872,
"strikeout_factor": 1.0474,
"walk_factor": 1.016,
"homer_factor": 0.9822,
"regression_flag": "neutral",
"k_percent": 28.5,
"bb_percent": 10.0,
"woba": 0.313,
"xwoba": 0.308,
"barrel_percent": 7.4,
"hard_hit_percent": 34.2,
"whiff_percent": 27.0
},
"espn_rank": {
"rank": 95,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "681035",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 15.0,
"R": 15.0,
"H": 28.0,
"BB": 10.0,
"SO": 33.0,
"HR": 3.0,
"BF": 119.0,
"Pitches": 460.0
},
"per_game": {
"IP": 5.1,
"ER": 3.0,
"R": 3.0,
"H": 5.6,
"BB": 2.0,
"SO": 6.6,
"HR": 0.6,
"BF": 23.8,
"Pitches": 92.0
},
"rates": {
"ERA": 5.1923,
"WHIP": 1.4615,
"ER_per_IP": 0.57692,
"H_per_IP": 1.07692,
"BB_per_IP": 0.38462,
"SO_per_IP": 1.26923,
"HR_per_IP": 0.11538
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.2,
"ER": 23.0,
"R": 23.0,
"H": 43.0,
"BB": 20.0,
"SO": 64.0,
"HR": 6.0,
"BF": 212.0,
"Pitches": 882.0
},
"per_game": {
"IP": 5.0,
"ER": 2.3,
"R": 2.3,
"H": 4.3,
"BB": 2.0,
"SO": 6.4,
"HR": 0.6,
"BF": 21.2,
"Pitches": 88.2
},
"rates": {
"ERA": 4.2534,
"WHIP": 1.2945,
"ER_per_IP": 0.4726,
"H_per_IP": 0.88356,
"BB_per_IP": 0.41096,
"SO_per_IP": 1.31507,
"HR_per_IP": 0.12329
}
},
"season": {
"games": 19,
"totals": {
"IP": 89.1,
"ER": 37.0,
"R": 38.0,
"H": 79.0,
"BB": 39.0,
"SO": 111.0,
"HR": 10.0,
"BF": 390.0,
"Pitches": 1627.0
},
"per_game": {
"IP": 4.2,
"ER": 1.9474,
"R": 2.0,
"H": 4.1579,
"BB": 2.0526,
"SO": 5.8421,
"HR": 0.5263,
"BF": 20.5263,
"Pitches": 85.6316
},
"rates": {
"ERA": 3.7276,
"WHIP": 1.3209,
"ER_per_IP": 0.41418,
"H_per_IP": 0.88433,
"BB_per_IP": 0.43657,
"SO_per_IP": 1.24254,
"HR_per_IP": 0.11194
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.602,
"predicted_H": 4.99,
"predicted_BB": 2.039,
"predicted_SO": 6.212,
"predicted_HR": 0.635,
"predicted_ERA": 4.5596,
"predicted_WHIP": 1.3687
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.438,
"form_weight": 0.562,
"form_reliability": 0.7917,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.0,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.602,
"final": 2.3383,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.99,
"final": 3.6804,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.039,
"final": 1.1459,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 6.212,
"final": 6.5571,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.635,
"final": 0.3569,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5596,
"final": 4.5596,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3687,
"final": 1.3687,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 48.2,
"ER": 23,
"H": 43,
"BB": 20,
"SO": 64,
"HR": 6,
"ERA": 4.2534246575342465,
"WHIP": 1.2945205479452053,
"K9": 11.835616438356164,
"HR9": 1.1095890410958904,
"games_pitched": 10,
"quality_starts": 2,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.9820526702179765,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 0.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "681035",
"player_name": "Christian Scott",
"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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 2.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.2,
"delta": -0.1333,
"percent_delta": -0.025,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.2,
"delta": -0.1333,
"percent_delta": -0.025,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.2,
"delta": -0.1333,
"percent_delta": -0.025,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.2,
"delta": -0.1333,
"percent_delta": -0.025,
"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": "NYM",
"games": 134,
"wins": 60,
"losses": 74,
"win_pct": 0.4478,
"runs_scored": 552.0,
"runs_allowed": 604.0,
"run_differential": -52.0,
"run_differential_per_game": -0.3881,
"avg_runs_scored": 4.1194,
"avg_runs_allowed": 4.5075,
"offense_index": 0.9218,
"defense_index": 0.9914,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 4.2,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.0921
},
"opponent": {
"team": "HOU",
"games": 134,
"wins": 67,
"losses": 67,
"win_pct": 0.5,
"runs_scored": 613.0,
"runs_allowed": 657.0,
"run_differential": -44.0,
"run_differential_per_game": -0.3284,
"avg_runs_scored": 4.5746,
"avg_runs_allowed": 4.903,
"offense_index": 1.0237,
"defense_index": 0.9114,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 5.4,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.0754
},
"edges": {
"quality_edge": -0.0167,
"offense_edge": -0.0782,
"opponent_offense_edge": 0.0237,
"defense_strength": -0.0086,
"opponent_defense_weakness": 0.0886,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9981,
"run_prevention": 1.0055,
"strikeout": 0.9976
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "681035",
"profile": {
"available": true,
"pitcher_id": "681035",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 367.0,
"k_percent": 28.5,
"bb_percent": 10.0,
"woba": 0.313,
"xwoba": 0.308,
"sweet_spot_percent": 40.7,
"barrel_batted_rate": 7.4,
"hard_hit_percent": 34.2,
"avg_best_speed": 75.971,
"avg_hyper_speed": 93.1339,
"whiff_percent": 27.0,
"swing_percent": 49.5
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.024,
"command_and_miss": 0.4679,
"regression_edge": 0.1429,
"xwoba_edge": 0.0857,
"barrel_edge": -0.0667,
"hard_hit_edge": 0.5143,
"whiff_edge": 0.2571,
"bb_edge": -0.2,
"pitch_design_score": 0.0123
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "681035",
"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": 90.07194600258177,
"release_spin_rate": 2347.3186219792724,
"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": 90.07194600258177,
"release_spin_rate": 2347.3186219792724,
"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.0719,
"release_spin_rate": 2347.3186,
"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.0123,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0879,
"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.1504,
"sample_weight": 1.0,
"run_prevention_factor": 0.9872,
"strikeout_factor": 1.0474,
"walk_factor": 1.016,
"homer_factor": 0.9822,
"woba_minus_xwoba": 0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "681035",
"espn_id": 4414215,
"player_name": "Christian Scott",
"team": "NYM",
"role": "pitcher",
"espn_rank": 95,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 95,
"gp_value": 19.0,
"gp_rank": 381,
"gs_value": 19.0,
"gs_rank": 97,
"qs_value": 2.0,
"qs_rank": 153,
"era_value": 3.7276,
"era_rank": null,
"w_value": 4.0,
"w_rank": 176,
"l_value": 3.0,
"l_rank": 220,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 89.1,
"ip_rank": 131,
"h_value": 79.0,
"h_rank": 137,
"er_value": 37.0,
"er_rank": 147,
"hr_value": 10.0,
"hr_rank": 146,
"bb_value": 39.0,
"bb_rank": 72,
"k_value": 111.0,
"k_rank": 72,
"k_per_9_value": 11.182836,
"k_per_9_rank": 14,
"whip_value": 1.3208,
"whip_rank": null,
"war_value": 1.63,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9872,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9872,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.016,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9822,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0474,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 20,
"Pitches": 89,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +5."
}
],
"provenance": {
"prediction": "output/games/20260828_HOU@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"
}
} |
| 20260828 | 20260828_KC@CLE | away | Michael Wacha | Michael Wacha | True | 6.0 | 8.0 | 6 | 2 | 0 | -2 | 5/4 | 3/0 | 7/10 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.4856557377049184,
"WHIP": 1.125,
"IP": 162.2,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 6.256,
"recent_avg_IP": 6.067,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0949,
"sample_weight": 1.0,
"run_prevention_factor": 1.0081,
"strikeout_factor": 0.9594,
"walk_factor": 0.944,
"homer_factor": 0.9954,
"regression_flag": "neutral",
"k_percent": 19.1,
"bb_percent": 6.4,
"woba": 0.305,
"xwoba": 0.313,
"barrel_percent": 7.0,
"hard_hit_percent": 37.0,
"whiff_percent": 21.0
},
"espn_rank": {
"rank": 28,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "608379",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.1,
"ER": 10.0,
"R": 12.0,
"H": 24.0,
"BB": 4.0,
"SO": 22.0,
"HR": 6.0,
"BF": 120.0,
"Pitches": 464.0
},
"per_game": {
"IP": 6.0,
"ER": 2.0,
"R": 2.4,
"H": 4.8,
"BB": 0.8,
"SO": 4.4,
"HR": 1.2,
"BF": 24.0,
"Pitches": 92.8
},
"rates": {
"ERA": 2.967,
"WHIP": 0.9231,
"ER_per_IP": 0.32967,
"H_per_IP": 0.79121,
"BB_per_IP": 0.13187,
"SO_per_IP": 0.72527,
"HR_per_IP": 0.1978
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.2,
"ER": 24.0,
"R": 26.0,
"H": 53.0,
"BB": 13.0,
"SO": 49.0,
"HR": 12.0,
"BF": 249.0,
"Pitches": 970.0
},
"per_game": {
"IP": 6.0,
"ER": 2.4,
"R": 2.6,
"H": 5.3,
"BB": 1.3,
"SO": 4.9,
"HR": 1.2,
"BF": 24.9,
"Pitches": 97.0
},
"rates": {
"ERA": 3.5027,
"WHIP": 1.0703,
"ER_per_IP": 0.38919,
"H_per_IP": 0.85946,
"BB_per_IP": 0.21081,
"SO_per_IP": 0.79459,
"HR_per_IP": 0.19459
}
},
"season": {
"games": 26,
"totals": {
"IP": 162.2,
"ER": 63.0,
"R": 67.0,
"H": 141.0,
"BB": 42.0,
"SO": 126.0,
"HR": 22.0,
"BF": 658.0,
"Pitches": 2434.0
},
"per_game": {
"IP": 6.1,
"ER": 2.4231,
"R": 2.5769,
"H": 5.4231,
"BB": 1.6154,
"SO": 4.8462,
"HR": 0.8462,
"BF": 25.3077,
"Pitches": 93.6154
},
"rates": {
"ERA": 3.4857,
"WHIP": 1.125,
"ER_per_IP": 0.3873,
"H_per_IP": 0.8668,
"BB_per_IP": 0.2582,
"SO_per_IP": 0.77459,
"HR_per_IP": 0.13525
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.329,
"predicted_H": 5.17,
"predicted_BB": 1.299,
"predicted_SO": 4.778,
"predicted_HR": 1.079,
"predicted_ERA": 3.4613,
"predicted_WHIP": 1.0682
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4181,
"form_weight": 0.5819,
"form_reliability": 0.8387,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.329,
"final": 2.1914,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.17,
"final": 5.0989,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.299,
"final": 2.0103,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.778,
"final": 5.7071,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.079,
"final": 0.6278,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.4613,
"final": 3.4613,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0682,
"final": 1.0682,
"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": 24,
"H": 53,
"BB": 13,
"SO": 49,
"HR": 12,
"ERA": 3.502702702702703,
"WHIP": 1.0702702702702702,
"K9": 7.151351351351352,
"HR9": 1.7513513513513514,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.8919901933575546,
"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": 5.0,
"predicted_BB": 3.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "608379",
"player_name": "Michael Wacha",
"position": "Starter",
"team": "KC",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 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": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "KC",
"games": 135,
"wins": 60,
"losses": 75,
"win_pct": 0.4444,
"runs_scored": 578.0,
"runs_allowed": 659.0,
"run_differential": -81.0,
"run_differential_per_game": -0.6,
"avg_runs_scored": 4.2815,
"avg_runs_allowed": 4.8815,
"offense_index": 0.9581,
"defense_index": 0.9154,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 9,
"losses": 1,
"win_pct": 0.9,
"avg_runs_scored": 6.5,
"avg_runs_allowed": 3.5,
"run_differential": 30.0
},
"available": true,
"quality_score": 0.0189
},
"opponent": {
"team": "CLE",
"games": 134,
"wins": 68,
"losses": 66,
"win_pct": 0.5075,
"runs_scored": 543.0,
"runs_allowed": 547.0,
"run_differential": -4.0,
"run_differential_per_game": -0.0299,
"avg_runs_scored": 4.0522,
"avg_runs_allowed": 4.0821,
"offense_index": 0.9068,
"defense_index": 1.0947,
"current_streak": "W7",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 2.6,
"run_differential": 23.0
},
"available": true,
"quality_score": 0.1077
},
"edges": {
"quality_edge": -0.0888,
"offense_edge": -0.0419,
"opponent_offense_edge": -0.0932,
"defense_strength": -0.0846,
"opponent_defense_weakness": -0.0947,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9976,
"run_prevention": 0.998,
"strikeout": 1.0048
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "608379",
"profile": {
"available": true,
"pitcher_id": "608379",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 604.0,
"k_percent": 19.1,
"bb_percent": 6.4,
"woba": 0.305,
"xwoba": 0.313,
"sweet_spot_percent": 34.1,
"barrel_batted_rate": 7.0,
"hard_hit_percent": 37.0,
"avg_best_speed": 78.0187,
"avg_hyper_speed": 93.6607,
"whiff_percent": 21.0,
"swing_percent": 48.6
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.0134,
"command_and_miss": -0.2564,
"regression_edge": -0.2286,
"xwoba_edge": -0.0571,
"barrel_edge": 0.0222,
"hard_hit_edge": 0.1143,
"whiff_edge": -0.6,
"bb_edge": 0.7,
"pitch_design_score": -0.1606
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "608379",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 92,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 86.98359735962079,
"release_spin_rate": 1984.113597852512,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 86.98359735962079,
"release_spin_rate": 1984.113597852512,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 86.9836,
"release_spin_rate": 1984.1136,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1606,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.1475,
"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.0949,
"sample_weight": 1.0,
"run_prevention_factor": 1.0081,
"strikeout_factor": 0.9594,
"walk_factor": 0.944,
"homer_factor": 0.9954,
"woba_minus_xwoba": -0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "608379",
"espn_id": 32640,
"player_name": "Michael Wacha",
"team": "KC",
"role": "pitcher",
"espn_rank": 28,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 28,
"gp_value": 26.0,
"gp_rank": 249,
"gs_value": 26.0,
"gs_rank": 18,
"qs_value": 17.0,
"qs_rank": 4,
"era_value": 3.4856,
"era_rank": 24.0,
"w_value": 7.0,
"w_rank": 74,
"l_value": 8.0,
"l_rank": 41,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 162.2,
"ip_rank": 4,
"h_value": 141.0,
"h_rank": 15,
"er_value": 63.0,
"er_rank": 35,
"hr_value": 22.0,
"hr_rank": 17,
"bb_value": 42.0,
"bb_rank": 58,
"k_value": 126.0,
"k_rank": 47,
"k_per_9_value": 6.9713116,
"k_per_9_rank": 317,
"whip_value": 1.125,
"whip_rank": 19.0,
"war_value": 3.02,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0081,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0081,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.944,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9954,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9594,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 26,
"Pitches": 115,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +6 outs from the projected workload."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
}
],
"provenance": {
"prediction": "output/games/20260828_KC@CLE.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260828 | 20260828_KC@CLE | home | Tanner Bibee | Tanner Bibee | True | 6.0 | 6.0 | 0 | 2 | 1 | -1 | 3/7 | 1/2 | 7/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.97228144989339,
"WHIP": 1.1449893390191896,
"IP": 156.1,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.79,
"recent_avg_IP": 6.267,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1779,
"sample_weight": 1.0,
"run_prevention_factor": 1.0151,
"strikeout_factor": 0.9777,
"walk_factor": 0.954,
"homer_factor": 1.0387,
"regression_flag": "neutral",
"k_percent": 19.3,
"bb_percent": 6.9,
"woba": 0.303,
"xwoba": 0.32,
"barrel_percent": 8.2,
"hard_hit_percent": 39.8,
"whiff_percent": 24.0
},
"espn_rank": {
"rank": 76,
"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": "676440",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.1,
"ER": 15.0,
"R": 17.0,
"H": 24.0,
"BB": 7.0,
"SO": 26.0,
"HR": 6.0,
"BF": 127.0,
"Pitches": 486.0
},
"per_game": {
"IP": 6.1,
"ER": 3.0,
"R": 3.4,
"H": 4.8,
"BB": 1.4,
"SO": 5.2,
"HR": 1.2,
"BF": 25.4,
"Pitches": 97.2
},
"rates": {
"ERA": 4.3085,
"WHIP": 0.9894,
"ER_per_IP": 0.47872,
"H_per_IP": 0.76596,
"BB_per_IP": 0.2234,
"SO_per_IP": 0.82979,
"HR_per_IP": 0.19149
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.0,
"ER": 29.0,
"R": 32.0,
"H": 55.0,
"BB": 15.0,
"SO": 42.0,
"HR": 10.0,
"BF": 252.0,
"Pitches": 935.0
},
"per_game": {
"IP": 6.0,
"ER": 2.9,
"R": 3.2,
"H": 5.5,
"BB": 1.5,
"SO": 4.2,
"HR": 1.0,
"BF": 25.2,
"Pitches": 93.5
},
"rates": {
"ERA": 4.2787,
"WHIP": 1.1475,
"ER_per_IP": 0.47541,
"H_per_IP": 0.90164,
"BB_per_IP": 0.2459,
"SO_per_IP": 0.68852,
"HR_per_IP": 0.16393
}
},
"season": {
"games": 27,
"totals": {
"IP": 156.1,
"ER": 69.0,
"R": 73.0,
"H": 135.0,
"BB": 44.0,
"SO": 123.0,
"HR": 26.0,
"BF": 637.0,
"Pitches": 2439.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5556,
"R": 2.7037,
"H": 5.0,
"BB": 1.6296,
"SO": 4.5556,
"HR": 0.963,
"BF": 23.5926,
"Pitches": 90.3333
},
"rates": {
"ERA": 3.9723,
"WHIP": 1.145,
"ER_per_IP": 0.44136,
"H_per_IP": 0.86354,
"BB_per_IP": 0.28145,
"SO_per_IP": 0.78678,
"HR_per_IP": 0.16631
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.884,
"predicted_H": 5.191,
"predicted_BB": 1.594,
"predicted_SO": 4.847,
"predicted_HR": 1.045,
"predicted_ERA": 4.2755,
"predicted_WHIP": 1.1179
}
},
"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.884,
"final": 2.5163,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.191,
"final": 4.2796,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.594,
"final": 1.3469,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.847,
"final": 5.7426,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.045,
"final": 1.0263,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.2755,
"final": 4.2755,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1179,
"final": 1.1179,
"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": 29,
"H": 55,
"BB": 15,
"SO": 42,
"HR": 10,
"ERA": 4.278688524590164,
"WHIP": 1.1475409836065573,
"K9": 6.19672131147541,
"HR9": 1.4754098360655739,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.9812203661533012,
"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": 7.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "676440",
"player_name": "Tanner Bibee",
"position": "Starter",
"team": "CLE",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CLE",
"games": 134,
"wins": 68,
"losses": 66,
"win_pct": 0.5075,
"runs_scored": 543.0,
"runs_allowed": 547.0,
"run_differential": -4.0,
"run_differential_per_game": -0.0299,
"avg_runs_scored": 4.0522,
"avg_runs_allowed": 4.0821,
"offense_index": 0.9068,
"defense_index": 1.0947,
"current_streak": "W7",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 2.6,
"run_differential": 23.0
},
"available": true,
"quality_score": 0.1077
},
"opponent": {
"team": "KC",
"games": 135,
"wins": 60,
"losses": 75,
"win_pct": 0.4444,
"runs_scored": 578.0,
"runs_allowed": 659.0,
"run_differential": -81.0,
"run_differential_per_game": -0.6,
"avg_runs_scored": 4.2815,
"avg_runs_allowed": 4.8815,
"offense_index": 0.9581,
"defense_index": 0.9154,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 9,
"losses": 1,
"win_pct": 0.9,
"avg_runs_scored": 6.5,
"avg_runs_allowed": 3.5,
"run_differential": 30.0
},
"available": true,
"quality_score": 0.0189
},
"edges": {
"quality_edge": 0.0888,
"offense_edge": -0.0932,
"opponent_offense_edge": -0.0419,
"defense_strength": 0.0947,
"opponent_defense_weakness": 0.0846,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0081,
"run_prevention": 0.9794,
"strikeout": 1.006
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "676440",
"profile": {
"available": true,
"pitcher_id": "676440",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 582.0,
"k_percent": 19.3,
"bb_percent": 6.9,
"woba": 0.303,
"xwoba": 0.32,
"sweet_spot_percent": 34.4,
"barrel_batted_rate": 8.2,
"hard_hit_percent": 39.8,
"avg_best_speed": 78.8848,
"avg_hyper_speed": 94.0204,
"whiff_percent": 24.0,
"swing_percent": 47.2
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.1582,
"command_and_miss": -0.1186,
"regression_edge": -0.4857,
"xwoba_edge": -0.2571,
"barrel_edge": -0.2444,
"hard_hit_edge": -0.2857,
"whiff_edge": -0.1714,
"bb_edge": 0.575,
"pitch_design_score": -0.1243
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "676440",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 99,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 99,
"pitch_usage": 0.0,
"release_speed": 87.63291987951403,
"release_spin_rate": 2307.0595731062376,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 99,
"pitch_usage": 0.0,
"release_speed": 87.63291987951403,
"release_spin_rate": 2307.0595731062376,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 87.6329,
"release_spin_rate": 2307.0596,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1243,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.8877,
"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.1779,
"sample_weight": 1.0,
"run_prevention_factor": 1.0151,
"strikeout_factor": 0.9777,
"walk_factor": 0.954,
"homer_factor": 1.0387,
"woba_minus_xwoba": -0.017,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "676440",
"espn_id": 4345278,
"player_name": "Tanner Bibee",
"team": "CLE",
"role": "pitcher",
"espn_rank": 76,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 76,
"gp_value": 27.0,
"gp_rank": 226,
"gs_value": 27.0,
"gs_rank": 5,
"qs_value": 16.0,
"qs_rank": 8,
"era_value": 3.9722,
"era_rank": 37.0,
"w_value": 5.0,
"w_rank": 125,
"l_value": 13.0,
"l_rank": 2,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 156.1,
"ip_rank": 8,
"h_value": 135.0,
"h_rank": 24,
"er_value": 69.0,
"er_rank": 15,
"hr_value": 26.0,
"hr_rank": 7,
"bb_value": 44.0,
"bb_rank": 49,
"k_value": 123.0,
"k_rank": 52,
"k_per_9_value": 7.081023,
"k_per_9_rank": 175,
"whip_value": 1.1449,
"whip_rank": 22.0,
"war_value": 1.88,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0151,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0151,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.954,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0387,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9777,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 101,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was +4."
}
],
"provenance": {
"prediction": "output/games/20260828_KC@CLE.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260828 | 20260828_LAD@DET | away | Tarik Skubal | Tarik Skubal | True | 6.0 | 6.0 | 0 | 1 | 1 | 0 | 2/4 | 2/0 | 4/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.908839779005525,
"WHIP": 0.9530386740331491,
"IP": 120.2,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 6.033,
"recent_avg_IP": 6.133,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.7649,
"sample_weight": 1.0,
"run_prevention_factor": 0.935,
"strikeout_factor": 1.0914,
"walk_factor": 0.904,
"homer_factor": 0.9527,
"regression_flag": "neutral",
"k_percent": 30.9,
"bb_percent": 4.4,
"woba": 0.265,
"xwoba": 0.267,
"barrel_percent": 7.3,
"hard_hit_percent": 35.5,
"whiff_percent": 32.3
},
"espn_rank": {
"rank": 22,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669373",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.2,
"ER": 12.0,
"R": 13.0,
"H": 24.0,
"BB": 8.0,
"SO": 36.0,
"HR": 2.0,
"BF": 124.0,
"Pitches": 487.0
},
"per_game": {
"IP": 6.0,
"ER": 2.4,
"R": 2.6,
"H": 4.8,
"BB": 1.6,
"SO": 7.2,
"HR": 0.4,
"BF": 24.8,
"Pitches": 97.4
},
"rates": {
"ERA": 3.5217,
"WHIP": 1.0435,
"ER_per_IP": 0.3913,
"H_per_IP": 0.78261,
"BB_per_IP": 0.26087,
"SO_per_IP": 1.17391,
"HR_per_IP": 0.06522
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.0,
"ER": 17.0,
"R": 19.0,
"H": 43.0,
"BB": 13.0,
"SO": 80.0,
"HR": 4.0,
"BF": 239.0,
"Pitches": 941.0
},
"per_game": {
"IP": 6.0,
"ER": 1.7,
"R": 1.9,
"H": 4.3,
"BB": 1.3,
"SO": 8.0,
"HR": 0.4,
"BF": 23.9,
"Pitches": 94.1
},
"rates": {
"ERA": 2.5082,
"WHIP": 0.918,
"ER_per_IP": 0.27869,
"H_per_IP": 0.70492,
"BB_per_IP": 0.21311,
"SO_per_IP": 1.31148,
"HR_per_IP": 0.06557
}
},
"season": {
"games": 20,
"totals": {
"IP": 120.2,
"ER": 39.0,
"R": 43.0,
"H": 94.0,
"BB": 21.0,
"SO": 146.0,
"HR": 12.0,
"BF": 473.0,
"Pitches": 1826.0
},
"per_game": {
"IP": 6.0,
"ER": 1.95,
"R": 2.15,
"H": 4.7,
"BB": 1.05,
"SO": 7.3,
"HR": 0.6,
"BF": 23.65,
"Pitches": 91.3
},
"rates": {
"ERA": 2.9088,
"WHIP": 0.953,
"ER_per_IP": 0.3232,
"H_per_IP": 0.77901,
"BB_per_IP": 0.17403,
"SO_per_IP": 1.20994,
"HR_per_IP": 0.09945
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.226,
"predicted_H": 4.793,
"predicted_BB": 1.532,
"predicted_SO": 7.031,
"predicted_HR": 0.523,
"predicted_ERA": 3.3389,
"predicted_WHIP": 1.0541
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4345,
"form_weight": 0.5655,
"form_reliability": 0.8,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.226,
"final": 1.6933,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.793,
"final": 3.5794,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.532,
"final": 1.7353,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 7.031,
"final": 5.2795,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.523,
"final": 0.7303,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.3389,
"final": 3.3389,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0541,
"final": 1.0541,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 61.0,
"ER": 17,
"H": 43,
"BB": 13,
"SO": 80,
"HR": 4,
"ERA": 2.5081967213114753,
"WHIP": 0.9180327868852459,
"K9": 11.80327868852459,
"HR9": 0.5901639344262295,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.7763023333664159,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_BB": 2.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 1,
"predicted_H": 2,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669373",
"player_name": "Tarik Skubal",
"position": "Starter",
"team": "LAD",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 7.0,
"delta": 4.0,
"percent_delta": 1.3333,
"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": 7.0,
"delta": 4.0,
"percent_delta": 1.3333,
"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": 2.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 1.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 7.0,
"after": 4.0,
"delta": -3.0,
"percent_delta": -0.4286,
"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": 7.0,
"after": 4.0,
"delta": -3.0,
"percent_delta": -0.4286,
"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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"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": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAD",
"games": 134,
"wins": 80,
"losses": 54,
"win_pct": 0.597,
"runs_scored": 661.0,
"runs_allowed": 513.0,
"run_differential": 148.0,
"run_differential_per_game": 1.1045,
"avg_runs_scored": 4.9328,
"avg_runs_allowed": 3.8284,
"offense_index": 1.1039,
"defense_index": 1.1673,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 3.9,
"run_differential": 8.0
},
"available": true,
"quality_score": 0.2534
},
"opponent": {
"team": "DET",
"games": 133,
"wins": 62,
"losses": 71,
"win_pct": 0.4662,
"runs_scored": 592.0,
"runs_allowed": 522.0,
"run_differential": 70.0,
"run_differential_per_game": 0.5263,
"avg_runs_scored": 4.4511,
"avg_runs_allowed": 3.9248,
"offense_index": 0.9961,
"defense_index": 1.1386,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 3.2,
"avg_runs_allowed": 4.7,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.069
},
"edges": {
"quality_edge": 0.3224,
"offense_edge": 0.1039,
"opponent_offense_edge": -0.0039,
"defense_strength": 0.1673,
"opponent_defense_weakness": -0.1386,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0181,
"run_prevention": 0.9665,
"strikeout": 1.01
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669373",
"profile": {
"available": true,
"pitcher_id": "669373",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 444.0,
"k_percent": 30.9,
"bb_percent": 4.4,
"woba": 0.265,
"xwoba": 0.267,
"sweet_spot_percent": 32.9,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 35.5,
"avg_best_speed": 75.1297,
"avg_hyper_speed": 93.4737,
"whiff_percent": 32.3,
"swing_percent": 53.7
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.8124,
"command_and_miss": 1.1671,
"regression_edge": -0.0571,
"xwoba_edge": 1.2571,
"barrel_edge": -0.0444,
"hard_hit_edge": 0.3286,
"whiff_edge": 1.0143,
"bb_edge": 1.2,
"pitch_design_score": 0.1525
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669373",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 94,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 92.57479172715446,
"release_spin_rate": 2164.2997542296353,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 92.57479172715446,
"release_spin_rate": 2164.2997542296353,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 92.5748,
"release_spin_rate": 2164.2998,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1525,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.089,
"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.7649,
"sample_weight": 1.0,
"run_prevention_factor": 0.935,
"strikeout_factor": 1.0914,
"walk_factor": 0.904,
"homer_factor": 0.9527,
"woba_minus_xwoba": -0.002,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "669373",
"espn_id": 42409,
"player_name": "Tarik Skubal",
"team": "LAD",
"role": "pitcher",
"espn_rank": 22,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 22,
"gp_value": 20.0,
"gp_rank": 368,
"gs_value": 20.0,
"gs_rank": 89,
"qs_value": 12.0,
"qs_rank": 27,
"era_value": 2.9088,
"era_rank": null,
"w_value": 8.0,
"w_rank": 49,
"l_value": 7.0,
"l_rank": 70,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 120.2,
"ip_rank": 81,
"h_value": 94.0,
"h_rank": 108,
"er_value": 39.0,
"er_rank": 139,
"hr_value": 12.0,
"hr_rank": 121,
"bb_value": 21.0,
"bb_rank": 246,
"k_value": 146.0,
"k_rank": 24,
"k_per_9_value": 10.889503,
"k_per_9_rank": 8,
"whip_value": 0.953,
"whip_rank": null,
"war_value": 3.24,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.935,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.935,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.904,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9527,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0914,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 2,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 90,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260828_LAD@DET.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"
}
} |
| 20260828 | 20260828_LAD@DET | home | Drew Anderson | Drew Anderson | True | 4.1 | 4.2 | 1 | 1 | 0 | -1 | 4/4 | 1/5 | 10/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.094262295081967,
"WHIP": 1.2909836065573772,
"IP": 81.1,
"games_started": null,
"games_pitched": 44,
"role_avg_IP": 4.167,
"recent_avg_IP": 4.067,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.195,
"sample_weight": 1.0,
"run_prevention_factor": 0.9834,
"strikeout_factor": 1.0406,
"walk_factor": 0.994,
"homer_factor": 1.0201,
"regression_flag": "neutral",
"k_percent": 26.1,
"bb_percent": 8.9,
"woba": 0.321,
"xwoba": 0.298,
"barrel_percent": 8.6,
"hard_hit_percent": 38.6,
"whiff_percent": 28.2
},
"espn_rank": {
"rank": 231,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.33,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7656,
"prior_weight": 0.2344
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "623454",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 44,
"reference_playing_time": 4.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 19.0,
"ER": 7.0,
"R": 7.0,
"H": 17.0,
"BB": 6.0,
"SO": 15.0,
"HR": 4.0,
"BF": 77.0,
"Pitches": 283.0
},
"per_game": {
"IP": 3.2,
"ER": 1.4,
"R": 1.4,
"H": 3.4,
"BB": 1.2,
"SO": 3.0,
"HR": 0.8,
"BF": 15.4,
"Pitches": 56.6
},
"rates": {
"ERA": 3.3158,
"WHIP": 1.2105,
"ER_per_IP": 0.36842,
"H_per_IP": 0.89474,
"BB_per_IP": 0.31579,
"SO_per_IP": 0.78947,
"HR_per_IP": 0.21053
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 25.1,
"ER": 11.0,
"R": 11.0,
"H": 23.0,
"BB": 10.0,
"SO": 21.0,
"HR": 4.0,
"BF": 106.0,
"Pitches": 401.0
},
"per_game": {
"IP": 2.2,
"ER": 1.1,
"R": 1.1,
"H": 2.3,
"BB": 1.0,
"SO": 2.1,
"HR": 0.4,
"BF": 10.6,
"Pitches": 40.1
},
"rates": {
"ERA": 3.9079,
"WHIP": 1.3026,
"ER_per_IP": 0.43421,
"H_per_IP": 0.90789,
"BB_per_IP": 0.39474,
"SO_per_IP": 0.82895,
"HR_per_IP": 0.15789
}
},
"season": {
"games": 44,
"totals": {
"IP": 81.1,
"ER": 37.0,
"R": 40.0,
"H": 75.0,
"BB": 30.0,
"SO": 91.0,
"HR": 13.0,
"BF": 348.0,
"Pitches": 1346.0
},
"per_game": {
"IP": 2.0,
"ER": 0.8409,
"R": 0.9091,
"H": 1.7045,
"BB": 0.6818,
"SO": 2.0682,
"HR": 0.2955,
"BF": 7.9091,
"Pitches": 30.5909
},
"rates": {
"ERA": 4.0943,
"WHIP": 1.291,
"ER_per_IP": 0.45492,
"H_per_IP": 0.92213,
"BB_per_IP": 0.36885,
"SO_per_IP": 1.11885,
"HR_per_IP": 0.15984
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.1,
"predicted_ER": 1.421,
"predicted_H": 3.04,
"predicted_BB": 1.18,
"predicted_SO": 2.925,
"predicted_HR": 0.573,
"predicted_ERA": 3.8752,
"predicted_WHIP": 1.279
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.449,
"form_weight": 0.551,
"form_reliability": 0.7656,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.33,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7656,
"prior_weight": 0.2344
},
"applied_metrics": {
"predicted_IP": {
"model": 4.1,
"form": 3.1,
"final": 3.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.421,
"final": 1.232,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.04,
"final": 3.4711,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.18,
"final": 1.0992,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 10.0,
"form": 2.925,
"final": 6.1019,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.573,
"final": 0.3157,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.8752,
"final": 3.8752,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.279,
"final": 1.279,
"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": 25.1,
"ER": 11,
"H": 23,
"BB": 10,
"SO": 21,
"HR": 4,
"ERA": 3.9078947368421053,
"WHIP": 1.3026315789473686,
"K9": 7.460526315789474,
"HR9": 1.4210526315789473,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.953153052662185,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.333333333333333,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_BB": 1.0,
"predicted_SO": 10.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.33,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7656,
"prior_weight": 0.2344
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "623454",
"player_name": "Drew Anderson",
"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": 1.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.3333,
"predicted_SO": 10.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": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.1,
"predicted_R": 1.0,
"predicted_SO": 10.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 10.0,
"after": 10.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 10.0,
"after": 10.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "DET",
"games": 133,
"wins": 62,
"losses": 71,
"win_pct": 0.4662,
"runs_scored": 592.0,
"runs_allowed": 522.0,
"run_differential": 70.0,
"run_differential_per_game": 0.5263,
"avg_runs_scored": 4.4511,
"avg_runs_allowed": 3.9248,
"offense_index": 0.9961,
"defense_index": 1.1386,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 3.2,
"avg_runs_allowed": 4.7,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.069
},
"opponent": {
"team": "LAD",
"games": 134,
"wins": 80,
"losses": 54,
"win_pct": 0.597,
"runs_scored": 661.0,
"runs_allowed": 513.0,
"run_differential": 148.0,
"run_differential_per_game": 1.1045,
"avg_runs_scored": 4.9328,
"avg_runs_allowed": 3.8284,
"offense_index": 1.1039,
"defense_index": 1.1673,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 3.9,
"run_differential": 8.0
},
"available": true,
"quality_score": 0.2534
},
"edges": {
"quality_edge": -0.3224,
"offense_edge": -0.0039,
"opponent_offense_edge": 0.1039,
"defense_strength": 0.1386,
"opponent_defense_weakness": -0.1673,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9871,
"run_prevention": 1.0189,
"strikeout": 0.982
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "623454",
"profile": {
"available": true,
"pitcher_id": "623454",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 305.0,
"k_percent": 26.1,
"bb_percent": 8.9,
"woba": 0.321,
"xwoba": 0.298,
"sweet_spot_percent": 30.0,
"barrel_batted_rate": 8.6,
"hard_hit_percent": 38.6,
"avg_best_speed": 80.5709,
"avg_hyper_speed": 94.2164,
"whiff_percent": 28.2,
"swing_percent": 48.7
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.0283,
"command_and_miss": 0.4286,
"regression_edge": 0.6571,
"xwoba_edge": 0.3714,
"barrel_edge": -0.3333,
"hard_hit_edge": -0.1143,
"whiff_edge": 0.4286,
"bb_edge": 0.075,
"pitch_design_score": 0.0251
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "623454",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 47,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 47,
"pitch_usage": 0.0,
"release_speed": 90.30111562509353,
"release_spin_rate": 2144.0939147176737,
"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": 47,
"pitch_usage": 0.0,
"release_speed": 90.30111562509353,
"release_spin_rate": 2144.0939147176737,
"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.3011,
"release_spin_rate": 2144.0939,
"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.0251,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.1796,
"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.195,
"sample_weight": 1.0,
"run_prevention_factor": 0.9834,
"strikeout_factor": 1.0406,
"walk_factor": 0.994,
"homer_factor": 1.0201,
"woba_minus_xwoba": 0.023,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "623454",
"espn_id": 28617,
"player_name": "Drew Anderson",
"team": "MIL",
"role": "pitcher",
"espn_rank": 231,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 231,
"gp_value": 44.0,
"gp_rank": 120,
"gs_value": 6.0,
"gs_rank": 197,
"qs_value": 0.0,
"qs_rank": 205,
"era_value": 4.0942,
"era_rank": null,
"w_value": 4.0,
"w_rank": 176,
"l_value": 5.0,
"l_rank": 127,
"sv_value": 2.0,
"sv_rank": 84,
"hld_value": 6.0,
"hld_rank": 138,
"ip_value": 81.1,
"ip_rank": 147,
"h_value": 75.0,
"h_rank": 148,
"er_value": 37.0,
"er_rank": 147,
"hr_value": 13.0,
"hr_rank": 109,
"bb_value": 30.0,
"bb_rank": 141,
"k_value": 91.0,
"k_rank": 104,
"k_per_9_value": 10.069673,
"k_per_9_rank": 19,
"whip_value": 1.2909,
"whip_rank": null,
"war_value": 0.59,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9834,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9834,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.994,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0201,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0406,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 10,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 18,
"Pitches": 83,
"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": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +4."
}
],
"provenance": {
"prediction": "output/games/20260828_LAD@DET.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"
}
} |
| 20260828 | 20260828_MIA@WAS | away | Eury Pérez | Eury Pérez | True | 5.2 | 3.0 | -8 | 1 | 5 | 4 | 4/2 | 2/4 | 6/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.1723237597911225,
"WHIP": 1.112271540469974,
"IP": 127.2,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 5.551,
"recent_avg_IP": 5.8,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2325,
"sample_weight": 1.0,
"run_prevention_factor": 0.9802,
"strikeout_factor": 1.0457,
"walk_factor": 1.018,
"homer_factor": 1.0287,
"regression_flag": "neutral",
"k_percent": 26.6,
"bb_percent": 10.1,
"woba": 0.284,
"xwoba": 0.297,
"barrel_percent": 9.1,
"hard_hit_percent": 38.7,
"whiff_percent": 28.6
},
"espn_rank": {
"rank": 57,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "691587",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.0,
"ER": 6.0,
"R": 8.0,
"H": 18.0,
"BB": 14.0,
"SO": 31.0,
"HR": 0.0,
"BF": 116.0,
"Pitches": 488.0
},
"per_game": {
"IP": 5.2,
"ER": 1.2,
"R": 1.6,
"H": 3.6,
"BB": 2.8,
"SO": 6.2,
"HR": 0.0,
"BF": 23.2,
"Pitches": 97.6
},
"rates": {
"ERA": 1.8621,
"WHIP": 1.1034,
"ER_per_IP": 0.2069,
"H_per_IP": 0.62069,
"BB_per_IP": 0.48276,
"SO_per_IP": 1.06897,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.1,
"ER": 12.0,
"R": 14.0,
"H": 36.0,
"BB": 24.0,
"SO": 64.0,
"HR": 1.0,
"BF": 235.0,
"Pitches": 962.0
},
"per_game": {
"IP": 6.0,
"ER": 1.2,
"R": 1.4,
"H": 3.6,
"BB": 2.4,
"SO": 6.4,
"HR": 0.1,
"BF": 23.5,
"Pitches": 96.2
},
"rates": {
"ERA": 1.7901,
"WHIP": 0.9945,
"ER_per_IP": 0.1989,
"H_per_IP": 0.59669,
"BB_per_IP": 0.39779,
"SO_per_IP": 1.06077,
"HR_per_IP": 0.01657
}
},
"season": {
"games": 23,
"totals": {
"IP": 127.2,
"ER": 45.0,
"R": 51.0,
"H": 90.0,
"BB": 52.0,
"SO": 137.0,
"HR": 13.0,
"BF": 515.0,
"Pitches": 2093.0
},
"per_game": {
"IP": 5.2,
"ER": 1.9565,
"R": 2.2174,
"H": 3.913,
"BB": 2.2609,
"SO": 5.9565,
"HR": 0.5652,
"BF": 22.3913,
"Pitches": 91.0
},
"rates": {
"ERA": 3.1723,
"WHIP": 1.1123,
"ER_per_IP": 0.35248,
"H_per_IP": 0.70496,
"BB_per_IP": 0.40731,
"SO_per_IP": 1.07311,
"HR_per_IP": 0.10183
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 1.62,
"predicted_H": 3.982,
"predicted_BB": 2.453,
"predicted_SO": 6.02,
"predicted_HR": 0.275,
"predicted_ERA": 2.5308,
"predicted_WHIP": 1.1167
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4255,
"form_weight": 0.5745,
"form_reliability": 0.8214,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.62,
"final": 1.3562,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.982,
"final": 3.9897,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.453,
"final": 2.2603,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 6.02,
"final": 5.1606,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.275,
"final": 0.158,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.5308,
"final": 2.5308,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1167,
"final": 1.1167,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 60.1,
"ER": 12,
"H": 36,
"BB": 24,
"SO": 64,
"HR": 1,
"ERA": 1.7900552486187844,
"WHIP": 0.994475138121547,
"K9": 9.546961325966851,
"HR9": 0.14917127071823205,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": true,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.6974224764693957,
"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": 4.0,
"predicted_BB": 2.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
}
},
{
"step": "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": 4,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "691587",
"player_name": "Eury P\u00e9rez",
"position": "Starter",
"team": "MIA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 4.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": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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.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": 6.0,
"delta": 2.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": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"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": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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.2,
"after": 5.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": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.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": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIA",
"games": 134,
"wins": 68,
"losses": 66,
"win_pct": 0.5075,
"runs_scored": 582.0,
"runs_allowed": 563.0,
"run_differential": 19.0,
"run_differential_per_game": 0.1418,
"avg_runs_scored": 4.3433,
"avg_runs_allowed": 4.2015,
"offense_index": 0.9719,
"defense_index": 1.0636,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 3.4,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.0238
},
"opponent": {
"team": "WAS",
"games": 136,
"wins": 63,
"losses": 73,
"win_pct": 0.4632,
"runs_scored": 704.0,
"runs_allowed": 692.0,
"run_differential": 12.0,
"run_differential_per_game": 0.0882,
"avg_runs_scored": 5.1765,
"avg_runs_allowed": 5.0882,
"offense_index": 1.1584,
"defense_index": 0.8782,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 4.0,
"run_differential": -6.0
},
"available": true,
"quality_score": -0.0904
},
"edges": {
"quality_edge": 0.1142,
"offense_edge": -0.0281,
"opponent_offense_edge": 0.1584,
"defense_strength": 0.0636,
"opponent_defense_weakness": 0.1218,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0001,
"run_prevention": 1.0133,
"strikeout": 0.9908
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "691587",
"profile": {
"available": true,
"pitcher_id": "691587",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 494.0,
"k_percent": 26.6,
"bb_percent": 10.1,
"woba": 0.284,
"xwoba": 0.297,
"sweet_spot_percent": 31.4,
"barrel_batted_rate": 9.1,
"hard_hit_percent": 38.7,
"avg_best_speed": 76.7544,
"avg_hyper_speed": 94.0177,
"whiff_percent": 28.6,
"swing_percent": 51.2
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.2621,
"command_and_miss": 0.4207,
"regression_edge": -0.3714,
"xwoba_edge": 0.4,
"barrel_edge": -0.4444,
"hard_hit_edge": -0.1286,
"whiff_edge": 0.4857,
"bb_edge": -0.225,
"pitch_design_score": 0.1686
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "691587",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 99,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 99,
"pitch_usage": 0.0,
"release_speed": 92.86224536987449,
"release_spin_rate": 2522.012850884775,
"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": 99,
"pitch_usage": 0.0,
"release_speed": 92.86224536987449,
"release_spin_rate": 2522.012850884775,
"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.8622,
"release_spin_rate": 2522.0129,
"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.1686,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.204,
"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.2325,
"sample_weight": 1.0,
"run_prevention_factor": 0.9802,
"strikeout_factor": 1.0457,
"walk_factor": 1.018,
"homer_factor": 1.0287,
"woba_minus_xwoba": -0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "691587",
"espn_id": 4917854,
"player_name": "Eury Perez",
"team": "MIA",
"role": "pitcher",
"espn_rank": 57,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 57,
"gp_value": 23.0,
"gp_rank": 321,
"gs_value": 23.0,
"gs_rank": 66,
"qs_value": 11.0,
"qs_rank": 37,
"era_value": 3.1723,
"era_rank": null,
"w_value": 7.0,
"w_rank": 74,
"l_value": 9.0,
"l_rank": 20,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 127.2,
"ip_rank": 62,
"h_value": 90.0,
"h_rank": 114,
"er_value": 45.0,
"er_rank": 112,
"hr_value": 13.0,
"hr_rank": 109,
"bb_value": 52.0,
"bb_rank": 20,
"k_value": 137.0,
"k_rank": 33,
"k_per_9_value": 9.657964,
"k_per_9_rank": 14,
"whip_value": 1.1122,
"whip_rank": null,
"war_value": 2.27,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9802,
"adjusted": 1
},
"predicted_H": {
"original": 4.0,
"factor": 0.9802,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.018,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0287,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0457,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 97,
"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": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -8 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260828_MIA@WAS.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"
}
} |
| 20260828 | 20260828_MIA@WAS | home | Jackson Kent | Jackson Kent | True | 3.2 | 7.0 | 10 | 3 | 1 | -2 | 3/3 | 0/4 | 1/3 | Last 10 before this game (3 available){
"model_context": {
"embedded_season": {
"ERA": 8.027027027027026,
"WHIP": 2.108108108108108,
"IP": 12.1,
"games_started": null,
"games_pitched": 3,
"role_avg_IP": 4.111,
"recent_avg_IP": 4.111,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3091,
"sample_weight": 0.45,
"run_prevention_factor": 1.0263,
"strikeout_factor": 0.9964,
"walk_factor": 1.0792,
"homer_factor": 1.0573,
"regression_flag": "neutral",
"k_percent": 23.0,
"bb_percent": 18.0,
"woba": 0.388,
"xwoba": 0.372,
"barrel_percent": 8.3,
"hard_hit_percent": 47.2,
"whiff_percent": 22.8
},
"espn_rank": {
"rank": 686,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.375,
"prior_weight": 0.625
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "800600",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 3,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 3,
"totals": {
"IP": 12.1,
"ER": 11.0,
"R": 11.0,
"H": 15.0,
"BB": 11.0,
"SO": 14.0,
"HR": 1.0,
"BF": 61.0,
"Pitches": 252.0
},
"per_game": {
"IP": 4.0,
"ER": 3.6667,
"R": 3.6667,
"H": 5.0,
"BB": 3.6667,
"SO": 4.6667,
"HR": 0.3333,
"BF": 20.3333,
"Pitches": 84.0
},
"rates": {
"ERA": 8.027,
"WHIP": 2.1081,
"ER_per_IP": 0.89189,
"H_per_IP": 1.21622,
"BB_per_IP": 0.89189,
"SO_per_IP": 1.13514,
"HR_per_IP": 0.08108
}
},
"last_10": {
"games": 3,
"totals": {
"IP": 12.1,
"ER": 11.0,
"R": 11.0,
"H": 15.0,
"BB": 11.0,
"SO": 14.0,
"HR": 1.0,
"BF": 61.0,
"Pitches": 252.0
},
"per_game": {
"IP": 4.0,
"ER": 3.6667,
"R": 3.6667,
"H": 5.0,
"BB": 3.6667,
"SO": 4.6667,
"HR": 0.3333,
"BF": 20.3333,
"Pitches": 84.0
},
"rates": {
"ERA": 8.027,
"WHIP": 2.1081,
"ER_per_IP": 0.89189,
"H_per_IP": 1.21622,
"BB_per_IP": 0.89189,
"SO_per_IP": 1.13514,
"HR_per_IP": 0.08108
}
},
"season": {
"games": 3,
"totals": {
"IP": 12.1,
"ER": 11.0,
"R": 11.0,
"H": 15.0,
"BB": 11.0,
"SO": 14.0,
"HR": 1.0,
"BF": 61.0,
"Pitches": 252.0
},
"per_game": {
"IP": 4.0,
"ER": 3.6667,
"R": 3.6667,
"H": 5.0,
"BB": 3.6667,
"SO": 4.6667,
"HR": 0.3333,
"BF": 20.3333,
"Pitches": 84.0
},
"rates": {
"ERA": 8.027,
"WHIP": 2.1081,
"ER_per_IP": 0.89189,
"H_per_IP": 1.21622,
"BB_per_IP": 0.89189,
"SO_per_IP": 1.13514,
"HR_per_IP": 0.08108
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.863,
"predicted_H": 4.707,
"predicted_BB": 2.497,
"predicted_SO": 4.482,
"predicted_HR": 0.54,
"predicted_ERA": 5.8333,
"predicted_WHIP": 1.631
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.6141,
"form_weight": 0.3859,
"form_reliability": 0.375,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.375,
"prior_weight": 0.625
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.863,
"final": 2.9471,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.707,
"final": 3.6588,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.497,
"final": 0.9637,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 4.482,
"final": 2.3438,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.54,
"final": 0.2084,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.8333,
"final": 5.8333,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.631,
"final": 1.631,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 12.1,
"ER": 11,
"H": 15,
"BB": 11,
"SO": 14,
"HR": 1,
"ERA": 8.027027027027026,
"WHIP": 2.108108108108108,
"K9": 10.216216216216216,
"HR9": 0.7297297297297297,
"games_pitched": 3,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 3,
"error_prone": false
},
"games_count": 3,
"latest_game_date": "2026-08-23T00:00:00"
},
"recent_form_boost": 1.1719785478041846,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_BB": 0.0,
"predicted_SO": 1.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.375,
"prior_weight": 0.625
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 3.2,
"predicted_ER": 3,
"predicted_H": 3,
"predicted_BB": 0,
"predicted_SO": 1,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "800600",
"player_name": "Jackson Kent",
"position": "Starter",
"team": "WAS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.6667,
"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": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 3.2,
"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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 3.2,
"delta": -1.4667,
"percent_delta": -0.3143,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 3.2,
"delta": -1.4667,
"percent_delta": -0.3143,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 3.2,
"predicted_R": 3.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 3.2,
"after": 3.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 3.2,
"delta": -1.4667,
"percent_delta": -0.3143,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 3.2,
"delta": -1.4667,
"percent_delta": -0.3143,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "WAS",
"games": 136,
"wins": 63,
"losses": 73,
"win_pct": 0.4632,
"runs_scored": 704.0,
"runs_allowed": 692.0,
"run_differential": 12.0,
"run_differential_per_game": 0.0882,
"avg_runs_scored": 5.1765,
"avg_runs_allowed": 5.0882,
"offense_index": 1.1584,
"defense_index": 0.8782,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 4.0,
"run_differential": -6.0
},
"available": true,
"quality_score": -0.0904
},
"opponent": {
"team": "MIA",
"games": 134,
"wins": 68,
"losses": 66,
"win_pct": 0.5075,
"runs_scored": 582.0,
"runs_allowed": 563.0,
"run_differential": 19.0,
"run_differential_per_game": 0.1418,
"avg_runs_scored": 4.3433,
"avg_runs_allowed": 4.2015,
"offense_index": 0.9719,
"defense_index": 1.0636,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 3.4,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.0238
},
"edges": {
"quality_edge": -0.1142,
"offense_edge": 0.1584,
"opponent_offense_edge": -0.0281,
"defense_strength": -0.1218,
"opponent_defense_weakness": -0.0636,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9929,
"run_prevention": 1.0134,
"strikeout": 0.9988
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "800600",
"profile": {
"available": true,
"pitcher_id": "800600",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 41.0,
"k_percent": 23.0,
"bb_percent": 18.0,
"woba": 0.388,
"xwoba": 0.372,
"sweet_spot_percent": 30.6,
"barrel_batted_rate": 8.3,
"hard_hit_percent": 47.2,
"avg_best_speed": 74.7214,
"avg_hyper_speed": 95.3611,
"whiff_percent": 22.8,
"swing_percent": 45.2
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -1.069,
"command_and_miss": -0.4957,
"regression_edge": 0.4571,
"xwoba_edge": -1.7429,
"barrel_edge": -0.2667,
"hard_hit_edge": -1.3429,
"whiff_edge": -0.3429,
"bb_edge": -2.2,
"pitch_design_score": -0.0631
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "800600",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 81,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 88.72623626373627,
"release_spin_rate": 2092.4313186813188,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 88.72623626373627,
"release_spin_rate": 2092.4313186813188,
"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.7262,
"release_spin_rate": 2092.4313,
"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.0631,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4504,
"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.3091,
"sample_weight": 0.45,
"run_prevention_factor": 1.0263,
"strikeout_factor": 0.9964,
"walk_factor": 1.0792,
"homer_factor": 1.0573,
"woba_minus_xwoba": 0.016,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "800600",
"espn_id": 5007807,
"player_name": "Jackson Kent",
"team": "WSH",
"role": "pitcher",
"espn_rank": 686,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 686,
"gp_value": 3.0,
"gp_rank": 680,
"gs_value": 3.0,
"gs_rank": 246,
"qs_value": 0.0,
"qs_rank": 205,
"era_value": 8.027,
"era_rank": null,
"w_value": 0.0,
"w_rank": 510,
"l_value": 2.0,
"l_rank": 306,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 12.1,
"ip_rank": 567,
"h_value": 15.0,
"h_rank": 539,
"er_value": 11.0,
"er_rank": 472,
"hr_value": 1.0,
"hr_rank": 587,
"bb_value": 11.0,
"bb_rank": 436,
"k_value": 14.0,
"k_rank": 520,
"k_per_9_value": 10.216216,
"k_per_9_rank": 24,
"whip_value": 2.1081,
"whip_rank": null,
"war_value": -0.3,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0118,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 1.0118,
"adjusted": 6
},
"predicted_BB": {
"original": 4.0,
"factor": 1.0356,
"adjusted": 4
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0258,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9984,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 3.2,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 1,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 14,
"Pitches": 61,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 3 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by +10 outs from the projected workload."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +4."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260828_MIA@WAS.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"
}
} |
| 20260828 | 20260828_PHI@LAA | away | Andrew Painter | Andrew Painter | True | 5.0 | 6.0 | 3 | 3 | 3 | 0 | 6/2 | 1/3 | 9/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 6.04332129963899,
"WHIP": 1.483754512635379,
"IP": 92.1,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 4.843,
"recent_avg_IP": 5.467,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2242,
"sample_weight": 1.0,
"run_prevention_factor": 1.0191,
"strikeout_factor": 0.976,
"walk_factor": 0.982,
"homer_factor": 1.0412,
"regression_flag": "neutral",
"k_percent": 19.3,
"bb_percent": 8.3,
"woba": 0.356,
"xwoba": 0.336,
"barrel_percent": 8.6,
"hard_hit_percent": 36.6,
"whiff_percent": 23.7
},
"espn_rank": {
"rank": 327,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "691725",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.1,
"ER": 11.0,
"R": 11.0,
"H": 19.0,
"BB": 10.0,
"SO": 26.0,
"HR": 3.0,
"BF": 111.0,
"Pitches": 435.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2,
"R": 2.2,
"H": 3.8,
"BB": 2.0,
"SO": 5.2,
"HR": 0.6,
"BF": 22.2,
"Pitches": 87.0
},
"rates": {
"ERA": 3.622,
"WHIP": 1.061,
"ER_per_IP": 0.40244,
"H_per_IP": 0.69512,
"BB_per_IP": 0.36585,
"SO_per_IP": 0.95122,
"HR_per_IP": 0.10976
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.2,
"ER": 34.0,
"R": 34.0,
"H": 52.0,
"BB": 20.0,
"SO": 42.0,
"HR": 10.0,
"BF": 216.0,
"Pitches": 824.0
},
"per_game": {
"IP": 5.0,
"ER": 3.4,
"R": 3.4,
"H": 5.2,
"BB": 2.0,
"SO": 4.2,
"HR": 1.0,
"BF": 21.6,
"Pitches": 82.4
},
"rates": {
"ERA": 6.2877,
"WHIP": 1.4795,
"ER_per_IP": 0.69863,
"H_per_IP": 1.06849,
"BB_per_IP": 0.41096,
"SO_per_IP": 0.86301,
"HR_per_IP": 0.20548
}
},
"season": {
"games": 19,
"totals": {
"IP": 92.1,
"ER": 62.0,
"R": 62.0,
"H": 103.0,
"BB": 34.0,
"SO": 79.0,
"HR": 17.0,
"BF": 410.0,
"Pitches": 1576.0
},
"per_game": {
"IP": 5.0,
"ER": 3.2632,
"R": 3.2632,
"H": 5.4211,
"BB": 1.7895,
"SO": 4.1579,
"HR": 0.8947,
"BF": 21.5789,
"Pitches": 82.9474
},
"rates": {
"ERA": 6.0433,
"WHIP": 1.4838,
"ER_per_IP": 0.67148,
"H_per_IP": 1.11552,
"BB_per_IP": 0.36823,
"SO_per_IP": 0.8556,
"HR_per_IP": 0.18412
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.842,
"predicted_H": 4.791,
"predicted_BB": 1.969,
"predicted_SO": 4.72,
"predicted_HR": 0.808,
"predicted_ERA": 4.9305,
"predicted_WHIP": 1.303
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.438,
"form_weight": 0.562,
"form_reliability": 0.7917,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.842,
"final": 2.9112,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.791,
"final": 5.3206,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.969,
"final": 1.5446,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 9.0,
"form": 4.72,
"final": 6.5947,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.808,
"final": 0.8921,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.9305,
"final": 4.9305,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.303,
"final": 1.303,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 48.2,
"ER": 34,
"H": 52,
"BB": 20,
"SO": 42,
"HR": 10,
"ERA": 6.287671232876712,
"WHIP": 1.4794520547945205,
"K9": 7.767123287671232,
"HR9": 1.8493150684931505,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 1.2155286976152369,
"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": 9.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
}
},
{
"step": "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": 9,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "691725",
"player_name": "Andrew Painter",
"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": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.3333,
"predicted_SO": 9.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 9.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.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": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 9.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 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": 9.0,
"after": 9.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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.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": "PHI",
"games": 134,
"wins": 74,
"losses": 60,
"win_pct": 0.5522,
"runs_scored": 608.0,
"runs_allowed": 585.0,
"run_differential": 23.0,
"run_differential_per_game": 0.1716,
"avg_runs_scored": 4.5373,
"avg_runs_allowed": 4.3657,
"offense_index": 1.0135,
"defense_index": 1.0254,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 4.1,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.1705
},
"opponent": {
"team": "LAA",
"games": 134,
"wins": 52,
"losses": 82,
"win_pct": 0.3881,
"runs_scored": 548.0,
"runs_allowed": 623.0,
"run_differential": -75.0,
"run_differential_per_game": -0.5597,
"avg_runs_scored": 4.0896,
"avg_runs_allowed": 4.6493,
"offense_index": 0.9135,
"defense_index": 0.9629,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 3.3,
"run_differential": 8.0
},
"available": true,
"quality_score": -0.2339
},
"edges": {
"quality_edge": 0.4044,
"offense_edge": 0.0135,
"opponent_offense_edge": -0.0865,
"defense_strength": 0.0254,
"opponent_defense_weakness": 0.0371,
"recent_win_pct_edge": 0.5
},
"player_factors": {
"ip": 1.0204,
"run_prevention": 0.9634,
"strikeout": 1.0191
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "691725",
"profile": {
"available": true,
"pitcher_id": "691725",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 380.0,
"k_percent": 19.3,
"bb_percent": 8.3,
"woba": 0.356,
"xwoba": 0.336,
"sweet_spot_percent": 29.8,
"barrel_batted_rate": 8.6,
"hard_hit_percent": 36.6,
"avg_best_speed": 75.306,
"avg_hyper_speed": 93.7333,
"whiff_percent": 23.7,
"swing_percent": 48.7
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.4107,
"command_and_miss": -0.2036,
"regression_edge": 0.5714,
"xwoba_edge": -0.7143,
"barrel_edge": -0.3333,
"hard_hit_edge": 0.1714,
"whiff_edge": -0.2143,
"bb_edge": 0.225,
"pitch_design_score": 0.0196
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "691725",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 77,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 77,
"pitch_usage": 0.0,
"release_speed": 90.20186596189707,
"release_spin_rate": 2299.9389803815907,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 77,
"pitch_usage": 0.0,
"release_speed": 90.20186596189707,
"release_spin_rate": 2299.9389803815907,
"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.2019,
"release_spin_rate": 2299.939,
"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.0196,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.1399,
"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.2242,
"sample_weight": 1.0,
"run_prevention_factor": 1.0191,
"strikeout_factor": 0.976,
"walk_factor": 0.982,
"homer_factor": 1.0412,
"woba_minus_xwoba": 0.02,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "691725",
"espn_id": 4872683,
"player_name": "Andrew Painter",
"team": "PHI",
"role": "pitcher",
"espn_rank": 327,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 327,
"gp_value": 19.0,
"gp_rank": 381,
"gs_value": 17.0,
"gs_rank": 110,
"qs_value": 4.0,
"qs_rank": 117,
"era_value": 6.0433,
"era_rank": null,
"w_value": 3.0,
"w_rank": 229,
"l_value": 8.0,
"l_rank": 41,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 92.1,
"ip_rank": 126,
"h_value": 103.0,
"h_rank": 96,
"er_value": 62.0,
"er_rank": 40,
"hr_value": 17.0,
"hr_rank": 53,
"bb_value": 34.0,
"bb_rank": 114,
"k_value": 79.0,
"k_rank": 137,
"k_per_9_value": 7.7003613,
"k_per_9_rank": 29,
"whip_value": 1.4837,
"whip_rank": null,
"war_value": 0.23,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0191,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0191,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.982,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0412,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.976,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 9,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 92,
"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": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was -4."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260828_PHI@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"
}
} |
| 20260828 | 20260828_PHI@LAA | home | Reid Detmers | Reid Detmers | True | 5.2 | 6.0 | 1 | 3 | 1 | -2 | 5/8 | 3/0 | 7/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6241610738255035,
"WHIP": 1.0604026845637584,
"IP": 149.0,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 5.731,
"recent_avg_IP": 5.8,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.3806,
"sample_weight": 1.0,
"run_prevention_factor": 0.9677,
"strikeout_factor": 1.0606,
"walk_factor": 0.962,
"homer_factor": 0.9998,
"regression_flag": "neutral",
"k_percent": 28.5,
"bb_percent": 7.3,
"woba": 0.273,
"xwoba": 0.284,
"barrel_percent": 8.1,
"hard_hit_percent": 38.7,
"whiff_percent": 29.3
},
"espn_rank": {
"rank": 32,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "672282",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.0,
"ER": 6.0,
"R": 6.0,
"H": 19.0,
"BB": 7.0,
"SO": 36.0,
"HR": 4.0,
"BF": 110.0,
"Pitches": 434.0
},
"per_game": {
"IP": 5.2,
"ER": 1.2,
"R": 1.2,
"H": 3.8,
"BB": 1.4,
"SO": 7.2,
"HR": 0.8,
"BF": 22.0,
"Pitches": 86.8
},
"rates": {
"ERA": 1.8621,
"WHIP": 0.8966,
"ER_per_IP": 0.2069,
"H_per_IP": 0.65517,
"BB_per_IP": 0.24138,
"SO_per_IP": 1.24138,
"HR_per_IP": 0.13793
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.0,
"ER": 19.0,
"R": 19.0,
"H": 43.0,
"BB": 16.0,
"SO": 68.0,
"HR": 10.0,
"BF": 221.0,
"Pitches": 890.0
},
"per_game": {
"IP": 5.1,
"ER": 1.9,
"R": 1.9,
"H": 4.3,
"BB": 1.6,
"SO": 6.8,
"HR": 1.0,
"BF": 22.1,
"Pitches": 89.0
},
"rates": {
"ERA": 3.1091,
"WHIP": 1.0727,
"ER_per_IP": 0.34545,
"H_per_IP": 0.78182,
"BB_per_IP": 0.29091,
"SO_per_IP": 1.23636,
"HR_per_IP": 0.18182
}
},
"season": {
"games": 26,
"totals": {
"IP": 149.0,
"ER": 60.0,
"R": 63.0,
"H": 114.0,
"BB": 44.0,
"SO": 172.0,
"HR": 17.0,
"BF": 603.0,
"Pitches": 2399.0
},
"per_game": {
"IP": 5.2,
"ER": 2.3077,
"R": 2.4231,
"H": 4.3846,
"BB": 1.6923,
"SO": 6.6154,
"HR": 0.6538,
"BF": 23.1923,
"Pitches": 92.2692
},
"rates": {
"ERA": 3.6242,
"WHIP": 1.0604,
"ER_per_IP": 0.40268,
"H_per_IP": 0.7651,
"BB_per_IP": 0.2953,
"SO_per_IP": 1.15436,
"HR_per_IP": 0.11409
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 1.827,
"predicted_H": 4.246,
"predicted_BB": 1.591,
"predicted_SO": 6.555,
"predicted_HR": 0.826,
"predicted_ERA": 2.952,
"predicted_WHIP": 1.0481
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4181,
"form_weight": 0.5819,
"form_reliability": 0.8387,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 1.827,
"final": 2.7356,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.246,
"final": 4.9794,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.591,
"final": 2.1802,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 6.555,
"final": 6.7411,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.826,
"final": 1.3169,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.952,
"final": 2.952,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0481,
"final": 1.0481,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.0,
"ER": 19,
"H": 43,
"BB": 16,
"SO": 68,
"HR": 10,
"ERA": 3.1090909090909093,
"WHIP": 1.072727272727273,
"K9": 11.127272727272729,
"HR9": 1.6363636363636365,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-21T00:00:00"
},
"recent_form_boost": 0.8477702916376529,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_BB": 3.0,
"predicted_SO": 7.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 3,
"predicted_H": 6,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "672282",
"player_name": "Reid Detmers",
"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": 3.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 3,
"boosted_metrics": 0,
"deboosted_metrics": 3,
"better_metrics": 2,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 5.0,
"delta": -1.0,
"percent_delta": -0.1667,
"direction": "deboost",
"projection_effect": "better",
"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": 5.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_H",
"before": 6.0,
"after": 5.0,
"delta": -1.0,
"percent_delta": -0.1667,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 5.0,
"delta": -1.0,
"percent_delta": -0.1667,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 4,
"boosted_metrics": 0,
"deboosted_metrics": 4,
"better_metrics": 3,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAA",
"games": 134,
"wins": 52,
"losses": 82,
"win_pct": 0.3881,
"runs_scored": 548.0,
"runs_allowed": 623.0,
"run_differential": -75.0,
"run_differential_per_game": -0.5597,
"avg_runs_scored": 4.0896,
"avg_runs_allowed": 4.6493,
"offense_index": 0.9135,
"defense_index": 0.9629,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 3.3,
"run_differential": 8.0
},
"available": true,
"quality_score": -0.2339
},
"opponent": {
"team": "PHI",
"games": 134,
"wins": 74,
"losses": 60,
"win_pct": 0.5522,
"runs_scored": 608.0,
"runs_allowed": 585.0,
"run_differential": 23.0,
"run_differential_per_game": 0.1716,
"avg_runs_scored": 4.5373,
"avg_runs_allowed": 4.3657,
"offense_index": 1.0135,
"defense_index": 1.0254,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 4.1,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.1705
},
"edges": {
"quality_edge": -0.4044,
"offense_edge": -0.0865,
"opponent_offense_edge": 0.0135,
"defense_strength": -0.0371,
"opponent_defense_weakness": -0.0254,
"recent_win_pct_edge": -0.5
},
"player_factors": {
"ip": 0.9822,
"run_prevention": 1.0261,
"strikeout": 0.9868
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "672282",
"profile": {
"available": true,
"pitcher_id": "672282",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 576.0,
"k_percent": 28.5,
"bb_percent": 7.3,
"woba": 0.273,
"xwoba": 0.284,
"sweet_spot_percent": 31.4,
"barrel_batted_rate": 8.1,
"hard_hit_percent": 38.7,
"avg_best_speed": 80.1888,
"avg_hyper_speed": 94.3708,
"whiff_percent": 29.3,
"swing_percent": 49.1
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.4169,
"command_and_miss": 0.7179,
"regression_edge": -0.3143,
"xwoba_edge": 0.7714,
"barrel_edge": -0.2222,
"hard_hit_edge": -0.1286,
"whiff_edge": 0.5857,
"bb_edge": 0.475,
"pitch_design_score": -0.1015
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "672282",
"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": 88.03966004092277,
"release_spin_rate": 2234.6453988776,
"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": 88.03966004092277,
"release_spin_rate": 2234.6453988776,
"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.0397,
"release_spin_rate": 2234.6454,
"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.1015,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.725,
"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.3806,
"sample_weight": 1.0,
"run_prevention_factor": 0.9677,
"strikeout_factor": 1.0606,
"walk_factor": 0.962,
"homer_factor": 0.9998,
"woba_minus_xwoba": -0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "672282",
"espn_id": 4326697,
"player_name": "Reid Detmers",
"team": "LAA",
"role": "pitcher",
"espn_rank": 32,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 32,
"gp_value": 26.0,
"gp_rank": 249,
"gs_value": 26.0,
"gs_rank": 18,
"qs_value": 11.0,
"qs_rank": 37,
"era_value": 3.6241,
"era_rank": 28.0,
"w_value": 4.0,
"w_rank": 176,
"l_value": 8.0,
"l_rank": 41,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 149.0,
"ip_rank": 21,
"h_value": 114.0,
"h_rank": 75,
"er_value": 60.0,
"er_rank": 56,
"hr_value": 17.0,
"hr_rank": 53,
"bb_value": 44.0,
"bb_rank": 49,
"k_value": 172.0,
"k_rank": 9,
"k_per_9_value": 10.389262,
"k_per_9_rank": 11,
"whip_value": 1.0604,
"whip_rank": 9.0,
"war_value": 2.84,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9677,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9677,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.962,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9998,
"adjusted": 1
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0606,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 25,
"Pitches": 108,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260828_PHI@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"
}
} |
| 20260828 | 20260828_PIT@STL | away | Jared Jones | Jared Jones | True | 5.0 | 4.2 | -1 | 2 | 3 | 1 | 2/7 | 0/1 | 4/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.764705882352941,
"WHIP": 1.25,
"IP": 68.0,
"games_started": null,
"games_pitched": 15,
"role_avg_IP": 4.533,
"recent_avg_IP": 4.4,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2577,
"sample_weight": 1.0,
"run_prevention_factor": 0.9781,
"strikeout_factor": 1.06,
"walk_factor": 0.996,
"homer_factor": 1.015,
"regression_flag": "neutral",
"k_percent": 26.6,
"bb_percent": 9.0,
"woba": 0.318,
"xwoba": 0.297,
"barrel_percent": 8.2,
"hard_hit_percent": 39.1,
"whiff_percent": 31.1
},
"espn_rank": {
"rank": 206,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "683003",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 15,
"reference_playing_time": 4.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.0,
"ER": 17.0,
"R": 17.0,
"H": 25.0,
"BB": 13.0,
"SO": 24.0,
"HR": 5.0,
"BF": 105.0,
"Pitches": 401.0
},
"per_game": {
"IP": 4.1,
"ER": 3.4,
"R": 3.4,
"H": 5.0,
"BB": 2.6,
"SO": 4.8,
"HR": 1.0,
"BF": 21.0,
"Pitches": 80.2
},
"rates": {
"ERA": 6.9545,
"WHIP": 1.7273,
"ER_per_IP": 0.77273,
"H_per_IP": 1.13636,
"BB_per_IP": 0.59091,
"SO_per_IP": 1.09091,
"HR_per_IP": 0.22727
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.2,
"ER": 23.0,
"R": 24.0,
"H": 36.0,
"BB": 18.0,
"SO": 56.0,
"HR": 7.0,
"BF": 199.0,
"Pitches": 789.0
},
"per_game": {
"IP": 4.2,
"ER": 2.3,
"R": 2.4,
"H": 3.6,
"BB": 1.8,
"SO": 5.6,
"HR": 0.7,
"BF": 19.9,
"Pitches": 78.9
},
"rates": {
"ERA": 4.3427,
"WHIP": 1.1329,
"ER_per_IP": 0.48252,
"H_per_IP": 0.75524,
"BB_per_IP": 0.37762,
"SO_per_IP": 1.17483,
"HR_per_IP": 0.14685
}
},
"season": {
"games": 15,
"totals": {
"IP": 68.0,
"ER": 36.0,
"R": 37.0,
"H": 59.0,
"BB": 26.0,
"SO": 77.0,
"HR": 11.0,
"BF": 289.0,
"Pitches": 1135.0
},
"per_game": {
"IP": 4.2,
"ER": 2.4,
"R": 2.4667,
"H": 3.9333,
"BB": 1.7333,
"SO": 5.1333,
"HR": 0.7333,
"BF": 19.2667,
"Pitches": 75.6667
},
"rates": {
"ERA": 4.7647,
"WHIP": 1.25,
"ER_per_IP": 0.52941,
"H_per_IP": 0.86765,
"BB_per_IP": 0.38235,
"SO_per_IP": 1.13235,
"HR_per_IP": 0.16176
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.648,
"predicted_H": 4.273,
"predicted_BB": 2.004,
"predicted_SO": 4.838,
"predicted_HR": 0.788,
"predicted_ERA": 5.3311,
"predicted_WHIP": 1.404
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4556,
"form_weight": 0.5444,
"form_reliability": 0.75,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
},
"applied_metrics": {
"predicted_IP": {
"model": 4.1,
"form": 4.1,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.648,
"final": 2.3528,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.273,
"final": 3.2374,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.004,
"final": 1.0909,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.838,
"final": 4.4562,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.788,
"final": 0.8846,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.3311,
"final": 5.3311,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.404,
"final": 1.404,
"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.2,
"ER": 23,
"H": 36,
"BB": 18,
"SO": 56,
"HR": 7,
"ERA": 4.3426573426573425,
"WHIP": 1.132867132867133,
"K9": 10.573426573426573,
"HR9": 1.3216783216783217,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.9880500119173732,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 0.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "683003",
"player_name": "Jared Jones",
"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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 4.3333,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 5.0,
"delta": 0.6667,
"percent_delta": 0.1538,
"direction": "boost",
"projection_effect": "better",
"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": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 5.0,
"delta": 0.6667,
"percent_delta": 0.1538,
"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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 5.0,
"delta": 0.6667,
"percent_delta": 0.1539,
"direction": "boost",
"projection_effect": "better",
"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": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 5.0,
"delta": 0.6667,
"percent_delta": 0.1539,
"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": "PIT",
"games": 135,
"wins": 65,
"losses": 70,
"win_pct": 0.4815,
"runs_scored": 657.0,
"runs_allowed": 633.0,
"run_differential": 24.0,
"run_differential_per_game": 0.1778,
"avg_runs_scored": 4.8667,
"avg_runs_allowed": 4.6889,
"offense_index": 1.0906,
"defense_index": 0.9517,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.2,
"avg_runs_allowed": 3.3,
"run_differential": -1.0
},
"available": true,
"quality_score": 0.0062
},
"opponent": {
"team": "STL",
"games": 135,
"wins": 67,
"losses": 68,
"win_pct": 0.4963,
"runs_scored": 600.0,
"runs_allowed": 613.0,
"run_differential": -13.0,
"run_differential_per_game": -0.0963,
"avg_runs_scored": 4.4444,
"avg_runs_allowed": 4.5407,
"offense_index": 0.996,
"defense_index": 0.9827,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 7.1,
"run_differential": -21.0
},
"available": true,
"quality_score": -0.085
},
"edges": {
"quality_edge": 0.0912,
"offense_edge": 0.0906,
"opponent_offense_edge": -0.004,
"defense_strength": -0.0483,
"opponent_defense_weakness": 0.0173,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0024,
"run_prevention": 0.9996,
"strikeout": 1.0031
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "683003",
"profile": {
"available": true,
"pitcher_id": "683003",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 268.0,
"k_percent": 26.6,
"bb_percent": 9.0,
"woba": 0.318,
"xwoba": 0.297,
"sweet_spot_percent": 33.7,
"barrel_batted_rate": 8.2,
"hard_hit_percent": 39.1,
"avg_best_speed": 79.5499,
"avg_hyper_speed": 94.2663,
"whiff_percent": 31.1,
"swing_percent": 47.9
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.0436,
"command_and_miss": 0.6007,
"regression_edge": 0.6,
"xwoba_edge": 0.4,
"barrel_edge": -0.2444,
"hard_hit_edge": -0.1857,
"whiff_edge": 0.8429,
"bb_edge": 0.05,
"pitch_design_score": 0.2137
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "683003",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 79,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 79,
"pitch_usage": 0.0,
"release_speed": 93.66750722649874,
"release_spin_rate": 2505.3321423171064,
"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": 79,
"pitch_usage": 0.0,
"release_speed": 93.66750722649874,
"release_spin_rate": 2505.3321423171064,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 93.6675,
"release_spin_rate": 2505.3321,
"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.2137,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.5261,
"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.2577,
"sample_weight": 1.0,
"run_prevention_factor": 0.9781,
"strikeout_factor": 1.06,
"walk_factor": 0.996,
"homer_factor": 1.015,
"woba_minus_xwoba": 0.021,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "683003",
"espn_id": 4918156,
"player_name": "Jared Jones",
"team": "PIT",
"role": "pitcher",
"espn_rank": 206,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 206,
"gp_value": 15.0,
"gp_rank": 436,
"gs_value": 15.0,
"gs_rank": 124,
"qs_value": 3.0,
"qs_rank": 133,
"era_value": 4.7647,
"era_rank": null,
"w_value": 2.0,
"w_rank": 294,
"l_value": 5.0,
"l_rank": 127,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 68.0,
"ip_rank": 172,
"h_value": 59.0,
"h_rank": 181,
"er_value": 36.0,
"er_rank": 152,
"hr_value": 11.0,
"hr_rank": 135,
"bb_value": 26.0,
"bb_rank": 187,
"k_value": 77.0,
"k_rank": 141,
"k_per_9_value": 10.191176,
"k_per_9_rank": 22,
"whip_value": 1.25,
"whip_rank": null,
"war_value": 0.75,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9781,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 0.9781,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.996,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.015,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.06,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 18,
"Pitches": 77,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 5",
"detail": "Actual minus predicted hits was +5."
}
],
"provenance": {
"prediction": "output/games/20260828_PIT@STL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260828 | 20260828_PIT@STL | home | Quinn Mathews | Quinn Mathews | True | 4.1 | 5.2 | 4 | 2 | 1 | -1 | 4/5 | 1/1 | 7/7 | Last 10 before this game (3 available){
"model_context": {
"embedded_season": {
"ERA": 6.428571428571429,
"WHIP": 1.7857142857142858,
"IP": 14.0,
"games_started": null,
"games_pitched": 3,
"role_avg_IP": 4.667,
"recent_avg_IP": 4.667,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2213,
"sample_weight": 0.45,
"run_prevention_factor": 0.9812,
"strikeout_factor": 0.9954,
"walk_factor": 1.0126,
"homer_factor": 0.9225,
"regression_flag": "positive_pitcher_regression",
"k_percent": 19.7,
"bb_percent": 10.6,
"woba": 0.351,
"xwoba": 0.275,
"barrel_percent": 2.2,
"hard_hit_percent": 28.3,
"whiff_percent": 25.7
},
"espn_rank": {
"rank": 637,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.375,
"prior_weight": 0.625
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "687273",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 3,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 3,
"totals": {
"IP": 14.0,
"ER": 10.0,
"R": 10.0,
"H": 18.0,
"BB": 7.0,
"SO": 13.0,
"HR": 1.0,
"BF": 66.0,
"Pitches": 291.0
},
"per_game": {
"IP": 4.2,
"ER": 3.3333,
"R": 3.3333,
"H": 6.0,
"BB": 2.3333,
"SO": 4.3333,
"HR": 0.3333,
"BF": 22.0,
"Pitches": 97.0
},
"rates": {
"ERA": 6.4286,
"WHIP": 1.7857,
"ER_per_IP": 0.71429,
"H_per_IP": 1.28571,
"BB_per_IP": 0.5,
"SO_per_IP": 0.92857,
"HR_per_IP": 0.07143
}
},
"last_10": {
"games": 3,
"totals": {
"IP": 14.0,
"ER": 10.0,
"R": 10.0,
"H": 18.0,
"BB": 7.0,
"SO": 13.0,
"HR": 1.0,
"BF": 66.0,
"Pitches": 291.0
},
"per_game": {
"IP": 4.2,
"ER": 3.3333,
"R": 3.3333,
"H": 6.0,
"BB": 2.3333,
"SO": 4.3333,
"HR": 0.3333,
"BF": 22.0,
"Pitches": 97.0
},
"rates": {
"ERA": 6.4286,
"WHIP": 1.7857,
"ER_per_IP": 0.71429,
"H_per_IP": 1.28571,
"BB_per_IP": 0.5,
"SO_per_IP": 0.92857,
"HR_per_IP": 0.07143
}
},
"season": {
"games": 3,
"totals": {
"IP": 14.0,
"ER": 10.0,
"R": 10.0,
"H": 18.0,
"BB": 7.0,
"SO": 13.0,
"HR": 1.0,
"BF": 66.0,
"Pitches": 291.0
},
"per_game": {
"IP": 4.2,
"ER": 3.3333,
"R": 3.3333,
"H": 6.0,
"BB": 2.3333,
"SO": 4.3333,
"HR": 0.3333,
"BF": 22.0,
"Pitches": 97.0
},
"rates": {
"ERA": 6.4286,
"WHIP": 1.7857,
"ER_per_IP": 0.71429,
"H_per_IP": 1.28571,
"BB_per_IP": 0.5,
"SO_per_IP": 0.92857,
"HR_per_IP": 0.07143
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.835,
"predicted_H": 5.322,
"predicted_BB": 2.04,
"predicted_SO": 4.569,
"predicted_HR": 0.579,
"predicted_ERA": 5.2339,
"predicted_WHIP": 1.5101
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.6141,
"form_weight": 0.3859,
"form_reliability": 0.375,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.375,
"prior_weight": 0.625
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.835,
"final": 2.3223,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.322,
"final": 4.5102,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.04,
"final": 1.4014,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.569,
"final": 6.0618,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.579,
"final": 0.8375,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.2339,
"final": 5.2339,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5101,
"final": 1.5101,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 14.0,
"ER": 10,
"H": 18,
"BB": 7,
"SO": 13,
"HR": 1,
"ERA": 6.428571428571429,
"WHIP": 1.7857142857142858,
"K9": 8.357142857142858,
"HR9": 0.6428571428571429,
"games_pitched": 3,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 3,
"error_prone": false
},
"games_count": 3,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 1.1093042224569867,
"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": 1.0,
"predicted_SO": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.375,
"prior_weight": 0.625
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "687273",
"player_name": "Quinn Mathews",
"position": "Starter",
"team": "STL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 4.1,
"delta": -0.9,
"percent_delta": -0.18,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.1,
"delta": -0.9,
"percent_delta": -0.18,
"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": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_R": 2.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.1,
"after": 4.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.1,
"delta": -0.9,
"percent_delta": -0.18,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.1,
"delta": -0.9,
"percent_delta": -0.18,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "STL",
"games": 135,
"wins": 67,
"losses": 68,
"win_pct": 0.4963,
"runs_scored": 600.0,
"runs_allowed": 613.0,
"run_differential": -13.0,
"run_differential_per_game": -0.0963,
"avg_runs_scored": 4.4444,
"avg_runs_allowed": 4.5407,
"offense_index": 0.996,
"defense_index": 0.9827,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 7.1,
"run_differential": -21.0
},
"available": true,
"quality_score": -0.085
},
"opponent": {
"team": "PIT",
"games": 135,
"wins": 65,
"losses": 70,
"win_pct": 0.4815,
"runs_scored": 657.0,
"runs_allowed": 633.0,
"run_differential": 24.0,
"run_differential_per_game": 0.1778,
"avg_runs_scored": 4.8667,
"avg_runs_allowed": 4.6889,
"offense_index": 1.0906,
"defense_index": 0.9517,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.2,
"avg_runs_allowed": 3.3,
"run_differential": -1.0
},
"available": true,
"quality_score": 0.0062
},
"edges": {
"quality_edge": -0.0912,
"offense_edge": -0.004,
"opponent_offense_edge": 0.0906,
"defense_strength": -0.0173,
"opponent_defense_weakness": 0.0483,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9922,
"run_prevention": 1.0208,
"strikeout": 0.99
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "687273",
"profile": {
"available": true,
"pitcher_id": "687273",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 41.0,
"k_percent": 19.7,
"bb_percent": 10.6,
"woba": 0.351,
"xwoba": 0.275,
"sweet_spot_percent": 30.4,
"barrel_batted_rate": 2.2,
"hard_hit_percent": 28.3,
"avg_best_speed": 75.6207,
"avg_hyper_speed": 93.039,
"whiff_percent": 25.7,
"swing_percent": 48.1
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.6264,
"command_and_miss": -0.1929,
"regression_edge": 2.0,
"xwoba_edge": 1.0286,
"barrel_edge": 1.0889,
"hard_hit_edge": 1.3571,
"whiff_edge": 0.0714,
"bb_edge": -0.35,
"pitch_design_score": -0.1094
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687273",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 96,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 96,
"pitch_usage": 0.0,
"release_speed": 87.8989365165491,
"release_spin_rate": 2078.2117200217035,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 96,
"pitch_usage": 0.0,
"release_speed": 87.8989365165491,
"release_spin_rate": 2078.2117200217035,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 87.8989,
"release_spin_rate": 2078.2117,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1094,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.7813,
"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.2213,
"sample_weight": 0.45,
"run_prevention_factor": 0.9812,
"strikeout_factor": 0.9954,
"walk_factor": 1.0126,
"homer_factor": 0.9225,
"woba_minus_xwoba": 0.076,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "687273",
"espn_id": 4837405,
"player_name": "Quinn Mathews",
"team": "STL",
"role": "pitcher",
"espn_rank": 637,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 637,
"gp_value": 3.0,
"gp_rank": 680,
"gs_value": 3.0,
"gs_rank": 246,
"qs_value": 0.0,
"qs_rank": 205,
"era_value": 6.4285,
"era_rank": null,
"w_value": 0.0,
"w_rank": 510,
"l_value": 2.0,
"l_rank": 306,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 14.0,
"ip_rank": 550,
"h_value": 18.0,
"h_rank": 508,
"er_value": 10.0,
"er_rank": 503,
"hr_value": 1.0,
"hr_rank": 587,
"bb_value": 7.0,
"bb_rank": 534,
"k_value": 13.0,
"k_rank": 534,
"k_per_9_value": 8.357142,
"k_per_9_rank": 26,
"whip_value": 1.7857,
"whip_rank": null,
"war_value": -0.19,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 0.9915,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 0.9915,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0057,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9651,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9979,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 18,
"Pitches": 83,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 3 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260828_PIT@STL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260828 | 20260828_SD@TB | away | Casey Mize | Casey Mize | True | 5.0 | 5.0 | 0 | 2 | 2 | 0 | 5/6 | 2/1 | 4/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.4394904458598723,
"WHIP": 1.089171974522293,
"IP": 104.2,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 5.233,
"recent_avg_IP": 4.8,
"last_start_IP": 2.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1871,
"sample_weight": 1.0,
"run_prevention_factor": 0.9841,
"strikeout_factor": 1.0017,
"walk_factor": 0.94,
"homer_factor": 1.0034,
"regression_flag": "neutral",
"k_percent": 22.6,
"bb_percent": 6.2,
"woba": 0.284,
"xwoba": 0.29,
"barrel_percent": 8.4,
"hard_hit_percent": 37.5,
"whiff_percent": 24.9
},
"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": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663554",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.0,
"ER": 15.0,
"R": 15.0,
"H": 24.0,
"BB": 7.0,
"SO": 13.0,
"HR": 5.0,
"BF": 101.0,
"Pitches": 378.0
},
"per_game": {
"IP": 4.2,
"ER": 3.0,
"R": 3.0,
"H": 4.8,
"BB": 1.4,
"SO": 2.6,
"HR": 1.0,
"BF": 20.2,
"Pitches": 75.6
},
"rates": {
"ERA": 5.625,
"WHIP": 1.2917,
"ER_per_IP": 0.625,
"H_per_IP": 1.0,
"BB_per_IP": 0.29167,
"SO_per_IP": 0.54167,
"HR_per_IP": 0.20833
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.1,
"ER": 25.0,
"R": 26.0,
"H": 48.0,
"BB": 13.0,
"SO": 43.0,
"HR": 7.0,
"BF": 215.0,
"Pitches": 828.0
},
"per_game": {
"IP": 5.1,
"ER": 2.5,
"R": 2.6,
"H": 4.8,
"BB": 1.3,
"SO": 4.3,
"HR": 0.7,
"BF": 21.5,
"Pitches": 82.8
},
"rates": {
"ERA": 4.2994,
"WHIP": 1.1656,
"ER_per_IP": 0.47771,
"H_per_IP": 0.9172,
"BB_per_IP": 0.24841,
"SO_per_IP": 0.82166,
"HR_per_IP": 0.13376
}
},
"season": {
"games": 20,
"totals": {
"IP": 104.2,
"ER": 40.0,
"R": 41.0,
"H": 88.0,
"BB": 26.0,
"SO": 95.0,
"HR": 10.0,
"BF": 421.0,
"Pitches": 1611.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0,
"R": 2.05,
"H": 4.4,
"BB": 1.3,
"SO": 4.75,
"HR": 0.5,
"BF": 21.05,
"Pitches": 80.55
},
"rates": {
"ERA": 3.4395,
"WHIP": 1.0892,
"ER_per_IP": 0.38217,
"H_per_IP": 0.84076,
"BB_per_IP": 0.24841,
"SO_per_IP": 0.90764,
"HR_per_IP": 0.09554
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.615,
"predicted_H": 4.757,
"predicted_BB": 1.449,
"predicted_SO": 3.814,
"predicted_HR": 0.79,
"predicted_ERA": 4.6826,
"predicted_WHIP": 1.2346
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4345,
"form_weight": 0.5655,
"form_reliability": 0.8,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.615,
"final": 2.3478,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.757,
"final": 4.8626,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.449,
"final": 1.6884,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 3.814,
"final": 3.4603,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.79,
"final": 0.4467,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.6826,
"final": 4.6826,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2346,
"final": 1.2346,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 52.1,
"ER": 25,
"H": 48,
"BB": 13,
"SO": 43,
"HR": 7,
"ERA": 4.2993630573248405,
"WHIP": 1.1656050955414012,
"K9": 7.394904458598726,
"HR9": 1.2038216560509554,
"games_pitched": 10,
"quality_starts": 5,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.9839978538843234,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 5,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663554",
"player_name": "Casey Mize",
"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": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"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": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"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": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"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": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"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": "SD",
"games": 134,
"wins": 72,
"losses": 62,
"win_pct": 0.5373,
"runs_scored": 569.0,
"runs_allowed": 552.0,
"run_differential": 17.0,
"run_differential_per_game": 0.1269,
"avg_runs_scored": 4.2463,
"avg_runs_allowed": 4.1194,
"offense_index": 0.9502,
"defense_index": 1.0848,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 2.0,
"run_differential": 19.0
},
"available": true,
"quality_score": 0.0823
},
"opponent": {
"team": "TB",
"games": 133,
"wins": 79,
"losses": 54,
"win_pct": 0.594,
"runs_scored": 595.0,
"runs_allowed": 548.0,
"run_differential": 47.0,
"run_differential_per_game": 0.3534,
"avg_runs_scored": 4.4737,
"avg_runs_allowed": 4.1203,
"offense_index": 1.0011,
"defense_index": 1.0845,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 4.1,
"run_differential": -5.0
},
"available": true,
"quality_score": 0.1234
},
"edges": {
"quality_edge": -0.0411,
"offense_edge": -0.0498,
"opponent_offense_edge": 0.0011,
"defense_strength": 0.0848,
"opponent_defense_weakness": -0.0845,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0009,
"run_prevention": 0.9938,
"strikeout": 0.9987
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663554",
"profile": {
"available": true,
"pitcher_id": "663554",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 406.0,
"k_percent": 22.6,
"bb_percent": 6.2,
"woba": 0.284,
"xwoba": 0.29,
"sweet_spot_percent": 35.5,
"barrel_batted_rate": 8.4,
"hard_hit_percent": 37.5,
"avg_best_speed": 78.7585,
"avg_hyper_speed": 93.8378,
"whiff_percent": 24.9,
"swing_percent": 48.0
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.2826,
"command_and_miss": 0.1736,
"regression_edge": -0.1714,
"xwoba_edge": 0.6,
"barrel_edge": -0.2889,
"hard_hit_edge": 0.0429,
"whiff_edge": -0.0429,
"bb_edge": 0.75,
"pitch_design_score": 0.011
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663554",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 81,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 90.04851401520826,
"release_spin_rate": 2095.774411866807,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 90.04851401520826,
"release_spin_rate": 2095.774411866807,
"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.0485,
"release_spin_rate": 2095.7744,
"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.011,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0785,
"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.1871,
"sample_weight": 1.0,
"run_prevention_factor": 0.9841,
"strikeout_factor": 1.0017,
"walk_factor": 0.94,
"homer_factor": 1.0034,
"woba_minus_xwoba": -0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "663554",
"espn_id": 41167,
"player_name": "Casey Mize",
"team": "SD",
"role": "pitcher",
"espn_rank": 50,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 50,
"gp_value": 20.0,
"gp_rank": 368,
"gs_value": 20.0,
"gs_rank": 89,
"qs_value": 10.0,
"qs_rank": 51,
"era_value": 3.4394,
"era_rank": null,
"w_value": 5.0,
"w_rank": 125,
"l_value": 7.0,
"l_rank": 70,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 104.2,
"ip_rank": 106,
"h_value": 88.0,
"h_rank": 119,
"er_value": 40.0,
"er_rank": 135,
"hr_value": 10.0,
"hr_rank": 146,
"bb_value": 26.0,
"bb_rank": 187,
"k_value": 95.0,
"k_rank": 97,
"k_per_9_value": 8.16879,
"k_per_9_rank": 24,
"whip_value": 1.0891,
"whip_rank": null,
"war_value": 2.42,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9841,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9841,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.94,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0034,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 1.0017,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 91,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260828_SD@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"
}
} |
| 20260828 | 20260828_SD@TB | home | Shane McClanahan | Shane McClanahan | True | 5.1 | 5.2 | 1 | 2 | 3 | 1 | 2/3 | 1/2 | 5/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.1024844720496896,
"WHIP": 1.1180124223602486,
"IP": 107.1,
"games_started": null,
"games_pitched": 22,
"role_avg_IP": 4.879,
"recent_avg_IP": 4.267,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0503,
"sample_weight": 1.0,
"run_prevention_factor": 1.0043,
"strikeout_factor": 1.012,
"walk_factor": 0.978,
"homer_factor": 1.0563,
"regression_flag": "negative_pitcher_regression",
"k_percent": 22.3,
"bb_percent": 8.1,
"woba": 0.27,
"xwoba": 0.314,
"barrel_percent": 8.9,
"hard_hit_percent": 41.6,
"whiff_percent": 27.0
},
"espn_rank": {
"rank": 99,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 107.1,
"season_ERA": 3.102,
"season_WHIP": 1.118,
"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": 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": "663556",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 22,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 21.1,
"ER": 10.0,
"R": 11.0,
"H": 15.0,
"BB": 8.0,
"SO": 17.0,
"HR": 2.0,
"BF": 89.0,
"Pitches": 338.0
},
"per_game": {
"IP": 4.1,
"ER": 2.0,
"R": 2.2,
"H": 3.0,
"BB": 1.6,
"SO": 3.4,
"HR": 0.4,
"BF": 17.8,
"Pitches": 67.6
},
"rates": {
"ERA": 4.2188,
"WHIP": 1.0781,
"ER_per_IP": 0.46875,
"H_per_IP": 0.70312,
"BB_per_IP": 0.375,
"SO_per_IP": 0.79688,
"HR_per_IP": 0.09375
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.1,
"ER": 18.0,
"R": 23.0,
"H": 39.0,
"BB": 15.0,
"SO": 40.0,
"HR": 5.0,
"BF": 196.0,
"Pitches": 724.0
},
"per_game": {
"IP": 4.2,
"ER": 1.8,
"R": 2.3,
"H": 3.9,
"BB": 1.5,
"SO": 4.0,
"HR": 0.5,
"BF": 19.6,
"Pitches": 72.4
},
"rates": {
"ERA": 3.4225,
"WHIP": 1.1408,
"ER_per_IP": 0.38028,
"H_per_IP": 0.82394,
"BB_per_IP": 0.3169,
"SO_per_IP": 0.84507,
"HR_per_IP": 0.10563
}
},
"season": {
"games": 22,
"totals": {
"IP": 107.1,
"ER": 37.0,
"R": 44.0,
"H": 84.0,
"BB": 36.0,
"SO": 99.0,
"HR": 8.0,
"BF": 443.0,
"Pitches": 1678.0
},
"per_game": {
"IP": 5.0,
"ER": 1.6818,
"R": 2.0,
"H": 3.8182,
"BB": 1.6364,
"SO": 4.5,
"HR": 0.3636,
"BF": 20.1364,
"Pitches": 76.2727
},
"rates": {
"ERA": 3.1025,
"WHIP": 1.118,
"ER_per_IP": 0.34472,
"H_per_IP": 0.78261,
"BB_per_IP": 0.3354,
"SO_per_IP": 0.92236,
"HR_per_IP": 0.07453
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.054,
"predicted_H": 3.832,
"predicted_BB": 1.679,
"predicted_SO": 4.105,
"predicted_HR": 0.497,
"predicted_ERA": 3.865,
"predicted_WHIP": 1.1519
}
},
"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.2,
"form": 4.2,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.054,
"final": 2.0309,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 3.832,
"final": 3.0475,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.679,
"final": 1.3882,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.105,
"final": 4.4883,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.497,
"final": 0.7124,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.865,
"final": 3.865,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1519,
"final": 1.1519,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 47.1,
"ER": 18,
"H": 39,
"BB": 15,
"SO": 40,
"HR": 5,
"ERA": 3.4225352112676055,
"WHIP": 1.1408450704225352,
"K9": 7.605633802816901,
"HR9": 0.9507042253521126,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.8847357205749128,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 1.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
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.1,
"predicted_ER": 2,
"predicted_H": 2,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.1,
"predicted_ER": 2,
"predicted_H": 2,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663556",
"player_name": "Shane McClanahan",
"position": "Starter",
"team": "TB",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.1,
"delta": -0.5667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.1,
"delta": -0.5667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.1,
"after": 5.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.1,
"after": 5.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.1,
"delta": -0.5667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.1,
"delta": -0.5667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TB",
"games": 133,
"wins": 79,
"losses": 54,
"win_pct": 0.594,
"runs_scored": 595.0,
"runs_allowed": 548.0,
"run_differential": 47.0,
"run_differential_per_game": 0.3534,
"avg_runs_scored": 4.4737,
"avg_runs_allowed": 4.1203,
"offense_index": 1.0011,
"defense_index": 1.0845,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 4.1,
"run_differential": -5.0
},
"available": true,
"quality_score": 0.1234
},
"opponent": {
"team": "SD",
"games": 134,
"wins": 72,
"losses": 62,
"win_pct": 0.5373,
"runs_scored": 569.0,
"runs_allowed": 552.0,
"run_differential": 17.0,
"run_differential_per_game": 0.1269,
"avg_runs_scored": 4.2463,
"avg_runs_allowed": 4.1194,
"offense_index": 0.9502,
"defense_index": 1.0848,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 2.0,
"run_differential": 19.0
},
"available": true,
"quality_score": 0.0823
},
"edges": {
"quality_edge": 0.0411,
"offense_edge": 0.0011,
"opponent_offense_edge": -0.0498,
"defense_strength": 0.0845,
"opponent_defense_weakness": -0.0848,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0062,
"run_prevention": 0.9815,
"strikeout": 1.0052
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663556",
"profile": {
"available": true,
"pitcher_id": "663556",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 421.0,
"k_percent": 22.3,
"bb_percent": 8.1,
"woba": 0.27,
"xwoba": 0.314,
"sweet_spot_percent": 32.3,
"barrel_batted_rate": 8.9,
"hard_hit_percent": 41.6,
"avg_best_speed": 78.2835,
"avg_hyper_speed": 94.6169,
"whiff_percent": 27.0,
"swing_percent": 48.3
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.0597,
"command_and_miss": 0.1643,
"regression_edge": -1.2571,
"xwoba_edge": -0.0857,
"barrel_edge": -0.4,
"hard_hit_edge": -0.5429,
"whiff_edge": 0.2571,
"bb_edge": 0.275,
"pitch_design_score": -0.0098
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663556",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 69,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 69,
"pitch_usage": 0.0,
"release_speed": 89.67791963059732,
"release_spin_rate": 2098.2361334703396,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 69,
"pitch_usage": 0.0,
"release_speed": 89.67791963059732,
"release_spin_rate": 2098.2361334703396,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 89.6779,
"release_spin_rate": 2098.2361,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0098,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0697,
"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.0503,
"sample_weight": 1.0,
"run_prevention_factor": 1.0043,
"strikeout_factor": 1.012,
"walk_factor": 0.978,
"homer_factor": 1.0563,
"woba_minus_xwoba": -0.044,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "663556",
"espn_id": 41199,
"player_name": "Shane McClanahan",
"team": "TB",
"role": "pitcher",
"espn_rank": 99,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 99,
"gp_value": 22.0,
"gp_rank": 338,
"gs_value": 22.0,
"gs_rank": 75,
"qs_value": 4.0,
"qs_rank": 117,
"era_value": 3.1024,
"era_rank": null,
"w_value": 9.0,
"w_rank": 30,
"l_value": 6.0,
"l_rank": 99,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 107.1,
"ip_rank": 98,
"h_value": 84.0,
"h_rank": 127,
"er_value": 37.0,
"er_rank": 147,
"hr_value": 8.0,
"hr_rank": 191,
"bb_value": 36.0,
"bb_rank": 95,
"k_value": 99.0,
"k_rank": 92,
"k_per_9_value": 8.301242,
"k_per_9_rank": 25,
"whip_value": 1.118,
"whip_rank": null,
"war_value": 1.61,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0043,
"adjusted": 2
},
"predicted_H": {
"original": 3.0,
"factor": 1.0043,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 0.978,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0563,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.012,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 19,
"Pitches": 86,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
}
],
"provenance": {
"prediction": "output/games/20260828_SD@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"
}
} |
| 20260828 | 20260828_SEA@TOR | away | Emerson Hancock | Emerson Hancock | True | 5.2 | 5.0 | -2 | 1 | 5 | 4 | 4/8 | 0/0 | 7/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.3665835411471323,
"WHIP": 1.1221945137157108,
"IP": 133.2,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 5.569,
"recent_avg_IP": 5.667,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.059,
"sample_weight": 1.0,
"run_prevention_factor": 0.995,
"strikeout_factor": 0.9971,
"walk_factor": 0.934,
"homer_factor": 1.0353,
"regression_flag": "neutral",
"k_percent": 23.0,
"bb_percent": 5.9,
"woba": 0.295,
"xwoba": 0.304,
"barrel_percent": 8.2,
"hard_hit_percent": 41.6,
"whiff_percent": 23.7
},
"espn_rank": {
"rank": 38,
"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": "676106",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.1,
"ER": 13.0,
"R": 14.0,
"H": 38.0,
"BB": 6.0,
"SO": 28.0,
"HR": 5.0,
"BF": 129.0,
"Pitches": 477.0
},
"per_game": {
"IP": 5.2,
"ER": 2.6,
"R": 2.8,
"H": 7.6,
"BB": 1.2,
"SO": 5.6,
"HR": 1.0,
"BF": 25.8,
"Pitches": 95.4
},
"rates": {
"ERA": 4.1294,
"WHIP": 1.5529,
"ER_per_IP": 0.45882,
"H_per_IP": 1.34118,
"BB_per_IP": 0.21176,
"SO_per_IP": 0.98824,
"HR_per_IP": 0.17647
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.0,
"ER": 21.0,
"R": 22.0,
"H": 54.0,
"BB": 15.0,
"SO": 50.0,
"HR": 7.0,
"BF": 230.0,
"Pitches": 857.0
},
"per_game": {
"IP": 5.1,
"ER": 2.1,
"R": 2.2,
"H": 5.4,
"BB": 1.5,
"SO": 5.0,
"HR": 0.7,
"BF": 23.0,
"Pitches": 85.7
},
"rates": {
"ERA": 3.5,
"WHIP": 1.2778,
"ER_per_IP": 0.38889,
"H_per_IP": 1.0,
"BB_per_IP": 0.27778,
"SO_per_IP": 0.92593,
"HR_per_IP": 0.12963
}
},
"season": {
"games": 24,
"totals": {
"IP": 133.2,
"ER": 50.0,
"R": 51.0,
"H": 118.0,
"BB": 32.0,
"SO": 125.0,
"HR": 18.0,
"BF": 543.0,
"Pitches": 2104.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0833,
"R": 2.125,
"H": 4.9167,
"BB": 1.3333,
"SO": 5.2083,
"HR": 0.75,
"BF": 22.625,
"Pitches": 87.6667
},
"rates": {
"ERA": 3.3666,
"WHIP": 1.1222,
"ER_per_IP": 0.37406,
"H_per_IP": 0.88279,
"BB_per_IP": 0.2394,
"SO_per_IP": 0.93516,
"HR_per_IP": 0.13466
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.406,
"predicted_H": 6.146,
"predicted_BB": 1.463,
"predicted_SO": 5.311,
"predicted_HR": 0.841,
"predicted_ERA": 3.8877,
"predicted_WHIP": 1.366
}
},
"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.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.406,
"final": 1.8115,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 6.146,
"final": 5.2386,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.463,
"final": 0.8444,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 5.311,
"final": 6.0252,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.841,
"final": 0.4854,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.8877,
"final": 3.8877,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.366,
"final": 1.366,
"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": 21,
"H": 54,
"BB": 15,
"SO": 50,
"HR": 7,
"ERA": 3.5,
"WHIP": 1.2777777777777777,
"K9": 8.333333333333334,
"HR9": 1.1666666666666667,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-21T00:00:00"
},
"recent_form_boost": 0.8968738269911882,
"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": 4.0,
"predicted_BB": 0.0,
"predicted_SO": 7.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "676106",
"player_name": "Emerson Hancock",
"position": "Starter",
"team": "SEA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SEA",
"games": 134,
"wins": 64,
"losses": 70,
"win_pct": 0.4776,
"runs_scored": 526.0,
"runs_allowed": 583.0,
"run_differential": -57.0,
"run_differential_per_game": -0.4254,
"avg_runs_scored": 3.9254,
"avg_runs_allowed": 4.3507,
"offense_index": 0.8784,
"defense_index": 1.0271,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 7.3,
"run_differential": -33.0
},
"available": true,
"quality_score": -0.0364
},
"opponent": {
"team": "TOR",
"games": 135,
"wins": 65,
"losses": 70,
"win_pct": 0.4815,
"runs_scored": 529.0,
"runs_allowed": 594.0,
"run_differential": -65.0,
"run_differential_per_game": -0.4815,
"avg_runs_scored": 3.9185,
"avg_runs_allowed": 4.4,
"offense_index": 0.8769,
"defense_index": 1.0156,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.9,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.11
},
"edges": {
"quality_edge": 0.0736,
"offense_edge": -0.1216,
"opponent_offense_edge": -0.1231,
"defense_strength": 0.0271,
"opponent_defense_weakness": -0.0156,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0087,
"run_prevention": 0.9739,
"strikeout": 1.0121
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "676106",
"profile": {
"available": true,
"pitcher_id": "676106",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 491.0,
"k_percent": 23.0,
"bb_percent": 5.9,
"woba": 0.295,
"xwoba": 0.304,
"sweet_spot_percent": 31.1,
"barrel_batted_rate": 8.2,
"hard_hit_percent": 41.6,
"avg_best_speed": 78.9862,
"avg_hyper_speed": 94.3663,
"whiff_percent": 23.7,
"swing_percent": 51.8
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.0778,
"command_and_miss": 0.1543,
"regression_edge": -0.2571,
"xwoba_edge": 0.2,
"barrel_edge": -0.2444,
"hard_hit_edge": -0.5429,
"whiff_edge": -0.2143,
"bb_edge": 0.825,
"pitch_design_score": 0.0128
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "676106",
"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": 90.08052790026855,
"release_spin_rate": 2358.8930894925725,
"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": 90.08052790026855,
"release_spin_rate": 2358.8930894925725,
"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.0805,
"release_spin_rate": 2358.8931,
"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.0128,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0913,
"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.059,
"sample_weight": 1.0,
"run_prevention_factor": 0.995,
"strikeout_factor": 0.9971,
"walk_factor": 0.934,
"homer_factor": 1.0353,
"woba_minus_xwoba": -0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "676106",
"espn_id": 4297897,
"player_name": "Emerson Hancock",
"team": "SEA",
"role": "pitcher",
"espn_rank": 38,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 38,
"gp_value": 24.0,
"gp_rank": 304,
"gs_value": 24.0,
"gs_rank": 55,
"qs_value": 12.0,
"qs_rank": 27,
"era_value": 3.3665,
"era_rank": null,
"w_value": 7.0,
"w_rank": 74,
"l_value": 7.0,
"l_rank": 70,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 133.2,
"ip_rank": 54,
"h_value": 118.0,
"h_rank": 65,
"er_value": 50.0,
"er_rank": 87,
"hr_value": 18.0,
"hr_rank": 40,
"bb_value": 32.0,
"bb_rank": 125,
"k_value": 125.0,
"k_rank": 50,
"k_per_9_value": 8.416459,
"k_per_9_rank": 25,
"whip_value": 1.1221,
"whip_rank": null,
"war_value": 2.7,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.995,
"adjusted": 2
},
"predicted_H": {
"original": 7.0,
"factor": 0.995,
"adjusted": 7
},
"predicted_BB": {
"original": 1.0,
"factor": 0.934,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0353,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9971,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 95,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 4",
"detail": "Actual minus predicted earned runs was +4; this is the primary run-prevention error."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was +4."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260828_SEA@TOR.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"
}
} |
| 20260828 | 20260828_SEA@TOR | home | Dylan Cease | Dylan Cease | True | 6.0 | 6.0 | 0 | 1 | 1 | 0 | 4/4 | 0/1 | 8/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.369515011547344,
"WHIP": 1.0600461893764432,
"IP": 144.1,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 6.014,
"recent_avg_IP": 6.2,
"last_start_IP": 6.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.9944,
"sample_weight": 1.0,
"run_prevention_factor": 0.9155,
"strikeout_factor": 1.1354,
"walk_factor": 1.038,
"homer_factor": 0.8779,
"regression_flag": "neutral",
"k_percent": 36.1,
"bb_percent": 11.1,
"woba": 0.246,
"xwoba": 0.255,
"barrel_percent": 4.7,
"hard_hit_percent": 32.3,
"whiff_percent": 34.8
},
"espn_rank": {
"rank": 4,
"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": "656302",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.0,
"ER": 7.0,
"R": 7.0,
"H": 14.0,
"BB": 16.0,
"SO": 42.0,
"HR": 2.0,
"BF": 122.0,
"Pitches": 519.0
},
"per_game": {
"IP": 6.1,
"ER": 1.4,
"R": 1.4,
"H": 2.8,
"BB": 3.2,
"SO": 8.4,
"HR": 0.4,
"BF": 24.4,
"Pitches": 103.8
},
"rates": {
"ERA": 2.0323,
"WHIP": 0.9677,
"ER_per_IP": 0.22581,
"H_per_IP": 0.45161,
"BB_per_IP": 0.51613,
"SO_per_IP": 1.35484,
"HR_per_IP": 0.06452
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 65.2,
"ER": 14.0,
"R": 16.0,
"H": 30.0,
"BB": 29.0,
"SO": 91.0,
"HR": 4.0,
"BF": 253.0,
"Pitches": 1067.0
},
"per_game": {
"IP": 6.2,
"ER": 1.4,
"R": 1.6,
"H": 3.0,
"BB": 2.9,
"SO": 9.1,
"HR": 0.4,
"BF": 25.3,
"Pitches": 106.7
},
"rates": {
"ERA": 1.9188,
"WHIP": 0.8985,
"ER_per_IP": 0.2132,
"H_per_IP": 0.45685,
"BB_per_IP": 0.44162,
"SO_per_IP": 1.38579,
"HR_per_IP": 0.06091
}
},
"season": {
"games": 24,
"totals": {
"IP": 144.1,
"ER": 38.0,
"R": 43.0,
"H": 89.0,
"BB": 64.0,
"SO": 209.0,
"HR": 9.0,
"BF": 579.0,
"Pitches": 2458.0
},
"per_game": {
"IP": 6.0,
"ER": 1.5833,
"R": 1.7917,
"H": 3.7083,
"BB": 2.6667,
"SO": 8.7083,
"HR": 0.375,
"BF": 24.125,
"Pitches": 102.4167
},
"rates": {
"ERA": 2.3695,
"WHIP": 1.06,
"ER_per_IP": 0.26328,
"H_per_IP": 0.61663,
"BB_per_IP": 0.44342,
"SO_per_IP": 1.44804,
"HR_per_IP": 0.06236
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 1.743,
"predicted_H": 3.606,
"predicted_BB": 2.888,
"predicted_SO": 8.264,
"predicted_HR": 0.489,
"predicted_ERA": 2.4836,
"predicted_WHIP": 1.0279
}
},
"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": 6.0,
"form": 6.1,
"final": 6.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.743,
"final": 1.4288,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.606,
"final": 3.7726,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.888,
"final": 1.6668,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 8.264,
"final": 7.3067,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.489,
"final": 0.7051,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.4836,
"final": 2.4836,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0279,
"final": 1.0279,
"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": 65.2,
"ER": 14,
"H": 30,
"BB": 29,
"SO": 91,
"HR": 4,
"ERA": 1.9187817258883246,
"WHIP": 0.898477157360406,
"K9": 12.472081218274111,
"HR9": 0.5482233502538071,
"games_pitched": 10,
"quality_starts": 8,
"dominant_form": true,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.7095042556431904,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_BB": 0.0,
"predicted_SO": 6.0,
"predicted_HR": 1.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": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 1,
"predicted_H": 4,
"predicted_BB": 0,
"predicted_SO": 8,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "656302",
"player_name": "Dylan Cease",
"position": "Starter",
"team": "TOR",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 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": 6.0,
"after": 8.0,
"delta": 2.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 8.0,
"delta": 2.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 1.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 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": 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": 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": 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": 8.0,
"delta": 2.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 8.0,
"delta": 2.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TOR",
"games": 135,
"wins": 65,
"losses": 70,
"win_pct": 0.4815,
"runs_scored": 529.0,
"runs_allowed": 594.0,
"run_differential": -65.0,
"run_differential_per_game": -0.4815,
"avg_runs_scored": 3.9185,
"avg_runs_allowed": 4.4,
"offense_index": 0.8769,
"defense_index": 1.0156,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.9,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.11
},
"opponent": {
"team": "SEA",
"games": 134,
"wins": 64,
"losses": 70,
"win_pct": 0.4776,
"runs_scored": 526.0,
"runs_allowed": 583.0,
"run_differential": -57.0,
"run_differential_per_game": -0.4254,
"avg_runs_scored": 3.9254,
"avg_runs_allowed": 4.3507,
"offense_index": 0.8784,
"defense_index": 1.0271,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 7.3,
"run_differential": -33.0
},
"available": true,
"quality_score": -0.0364
},
"edges": {
"quality_edge": -0.0736,
"offense_edge": -0.1231,
"opponent_offense_edge": -0.1216,
"defense_strength": 0.0156,
"opponent_defense_weakness": -0.0271,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 1.0024,
"run_prevention": 0.9827,
"strikeout": 1.0075
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "656302",
"profile": {
"available": true,
"pitcher_id": "656302",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 549.0,
"k_percent": 36.1,
"bb_percent": 11.1,
"woba": 0.246,
"xwoba": 0.255,
"sweet_spot_percent": 32.3,
"barrel_batted_rate": 4.7,
"hard_hit_percent": 32.3,
"avg_best_speed": 73.5718,
"avg_hyper_speed": 93.1717,
"whiff_percent": 34.8,
"swing_percent": 45.8
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 1.2131,
"command_and_miss": 1.2914,
"regression_edge": -0.2571,
"xwoba_edge": 1.6,
"barrel_edge": 0.5333,
"hard_hit_edge": 0.7857,
"whiff_edge": 1.3714,
"bb_edge": -0.475,
"pitch_design_score": 0.0624
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "656302",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 105,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 105,
"pitch_usage": 0.0,
"release_speed": 90.9657064009816,
"release_spin_rate": 2491.7307751389935,
"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": 105,
"pitch_usage": 0.0,
"release_speed": 90.9657064009816,
"release_spin_rate": 2491.7307751389935,
"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.9657,
"release_spin_rate": 2491.7308,
"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.0624,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.4454,
"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.9944,
"sample_weight": 1.0,
"run_prevention_factor": 0.9155,
"strikeout_factor": 1.1354,
"walk_factor": 1.038,
"homer_factor": 0.8779,
"woba_minus_xwoba": -0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "656302",
"espn_id": 34943,
"player_name": "Dylan Cease",
"team": "TOR",
"role": "pitcher",
"espn_rank": 4,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 4,
"gp_value": 24.0,
"gp_rank": 304,
"gs_value": 24.0,
"gs_rank": 55,
"qs_value": 13.0,
"qs_rank": 21,
"era_value": 2.3695,
"era_rank": 4.0,
"w_value": 8.0,
"w_rank": 49,
"l_value": 5.0,
"l_rank": 127,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 144.1,
"ip_rank": 33,
"h_value": 89.0,
"h_rank": 115,
"er_value": 38.0,
"er_rank": 143,
"hr_value": 9.0,
"hr_rank": 163,
"bb_value": 64.0,
"bb_rank": 7,
"k_value": 209.0,
"k_rank": 2,
"k_per_9_value": 13.032332,
"k_per_9_rank": 1,
"whip_value": 1.06,
"whip_rank": 9.0,
"war_value": 5.48,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9155,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 0.9155,
"adjusted": 3
},
"predicted_BB": {
"original": 3.0,
"factor": 1.038,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 0.8779,
"adjusted": 0
},
"predicted_SO": {
"original": 8.0,
"factor": 1.1354,
"adjusted": 9
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 8,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 97,
"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/20260828_SEA@TOR.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"
}
} |
| 20260828 | 20260828_TEX@MIL | away | Cody Bradford | Cody Bradford | True | 5.0 | 5.2 | 2 | 2 | 3 | 1 | 4/9 | 4/2 | 5/0 | Last 10 before this game (4 available){
"model_context": {
"embedded_season": {
"ERA": 3.0483870967741935,
"WHIP": 1.4032258064516128,
"IP": 20.2,
"games_started": null,
"games_pitched": 4,
"role_avg_IP": 5.167,
"recent_avg_IP": 5.167,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2734,
"sample_weight": 0.45,
"run_prevention_factor": 1.0232,
"strikeout_factor": 0.9751,
"walk_factor": 0.9586,
"homer_factor": 1.0595,
"regression_flag": "neutral",
"k_percent": 14.9,
"bb_percent": 4.6,
"woba": 0.343,
"xwoba": 0.349,
"barrel_percent": 11.8,
"hard_hit_percent": 40.6,
"whiff_percent": 22.6
},
"espn_rank": {
"rank": 247,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "674003",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 4,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 4,
"totals": {
"IP": 20.2,
"ER": 7.0,
"R": 7.0,
"H": 25.0,
"BB": 4.0,
"SO": 13.0,
"HR": 1.0,
"BF": 87.0,
"Pitches": 306.0
},
"per_game": {
"IP": 5.1,
"ER": 1.75,
"R": 1.75,
"H": 6.25,
"BB": 1.0,
"SO": 3.25,
"HR": 0.25,
"BF": 21.75,
"Pitches": 76.5
},
"rates": {
"ERA": 3.0484,
"WHIP": 1.4032,
"ER_per_IP": 0.33871,
"H_per_IP": 1.20968,
"BB_per_IP": 0.19355,
"SO_per_IP": 0.62903,
"HR_per_IP": 0.04839
}
},
"last_10": {
"games": 4,
"totals": {
"IP": 20.2,
"ER": 7.0,
"R": 7.0,
"H": 25.0,
"BB": 4.0,
"SO": 13.0,
"HR": 1.0,
"BF": 87.0,
"Pitches": 306.0
},
"per_game": {
"IP": 5.1,
"ER": 1.75,
"R": 1.75,
"H": 6.25,
"BB": 1.0,
"SO": 3.25,
"HR": 0.25,
"BF": 21.75,
"Pitches": 76.5
},
"rates": {
"ERA": 3.0484,
"WHIP": 1.4032,
"ER_per_IP": 0.33871,
"H_per_IP": 1.20968,
"BB_per_IP": 0.19355,
"SO_per_IP": 0.62903,
"HR_per_IP": 0.04839
}
},
"season": {
"games": 4,
"totals": {
"IP": 20.2,
"ER": 7.0,
"R": 7.0,
"H": 25.0,
"BB": 4.0,
"SO": 13.0,
"HR": 1.0,
"BF": 87.0,
"Pitches": 306.0
},
"per_game": {
"IP": 5.1,
"ER": 1.75,
"R": 1.75,
"H": 6.25,
"BB": 1.0,
"SO": 3.25,
"HR": 0.25,
"BF": 21.75,
"Pitches": 76.5
},
"rates": {
"ERA": 3.0484,
"WHIP": 1.4032,
"ER_per_IP": 0.33871,
"H_per_IP": 1.20968,
"BB_per_IP": 0.19355,
"SO_per_IP": 0.62903,
"HR_per_IP": 0.04839
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.21,
"predicted_H": 5.558,
"predicted_BB": 1.499,
"predicted_SO": 4.135,
"predicted_HR": 0.531,
"predicted_ERA": 3.8644,
"predicted_WHIP": 1.3707
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5847,
"form_weight": 0.4153,
"form_reliability": 0.4444,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.21,
"final": 2.0872,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.558,
"final": 4.647,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.499,
"final": 2.9614,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.135,
"final": 4.6408,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.531,
"final": 1.39,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.8644,
"final": 3.8644,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3707,
"final": 1.3707,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 20.2,
"ER": 7,
"H": 25,
"BB": 4,
"SO": 13,
"HR": 1,
"ERA": 3.048387096774194,
"WHIP": 1.403225806451613,
"K9": 5.661290322580646,
"HR9": 0.435483870967742,
"games_pitched": 4,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 4,
"error_prone": false
},
"games_count": 4,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.8982097658352289,
"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": 5.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "674003",
"player_name": "Cody Bradford",
"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": 4.0,
"predicted_ER": 2.0,
"predicted_H": 4.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": 4.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 2.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": 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": 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": 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": "TEX",
"games": 134,
"wins": 66,
"losses": 68,
"win_pct": 0.4925,
"runs_scored": 543.0,
"runs_allowed": 590.0,
"run_differential": -47.0,
"run_differential_per_game": -0.3507,
"avg_runs_scored": 4.0522,
"avg_runs_allowed": 4.403,
"offense_index": 0.9081,
"defense_index": 1.0135,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 4.1,
"run_differential": -3.0
},
"available": true,
"quality_score": -0.0496
},
"opponent": {
"team": "MIL",
"games": 134,
"wins": 83,
"losses": 51,
"win_pct": 0.6194,
"runs_scored": 668.0,
"runs_allowed": 495.0,
"run_differential": 173.0,
"run_differential_per_game": 1.291,
"avg_runs_scored": 4.9851,
"avg_runs_allowed": 3.694,
"offense_index": 1.1171,
"defense_index": 1.208,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.6,
"avg_runs_allowed": 2.5,
"run_differential": 41.0
},
"available": true,
"quality_score": 0.3306
},
"edges": {
"quality_edge": -0.3802,
"offense_edge": -0.0919,
"opponent_offense_edge": 0.1171,
"defense_strength": 0.0135,
"opponent_defense_weakness": -0.208,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9805,
"run_prevention": 1.0364,
"strikeout": 0.9792
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "674003",
"profile": {
"available": true,
"pitcher_id": "674003",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 63.0,
"k_percent": 14.9,
"bb_percent": 4.6,
"woba": 0.343,
"xwoba": 0.349,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 11.8,
"hard_hit_percent": 40.6,
"avg_best_speed": 81.7365,
"avg_hyper_speed": 94.9527,
"whiff_percent": 22.6,
"swing_percent": 50.7
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": -0.8489,
"command_and_miss": -0.3564,
"regression_edge": -0.1714,
"xwoba_edge": -1.0857,
"barrel_edge": -1.0444,
"hard_hit_edge": -0.4,
"whiff_edge": -0.3714,
"bb_edge": 1.15,
"pitch_design_score": -0.28
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "674003",
"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": 84.26618224573781,
"release_spin_rate": 1896.6627748383305,
"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": 84.26618224573781,
"release_spin_rate": 1896.6627748383305,
"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": 84.2662,
"release_spin_rate": 1896.6628,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.28,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -2.0,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.2734,
"sample_weight": 0.45,
"run_prevention_factor": 1.0232,
"strikeout_factor": 0.9751,
"walk_factor": 0.9586,
"homer_factor": 1.0595,
"woba_minus_xwoba": -0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "674003",
"espn_id": 4142539,
"player_name": "Cody Bradford",
"team": "TEX",
"role": "pitcher",
"espn_rank": 247,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 247,
"gp_value": 4.0,
"gp_rank": 635,
"gs_value": 4.0,
"gs_rank": 222,
"qs_value": 1.0,
"qs_rank": 174,
"era_value": 3.0483,
"era_rank": null,
"w_value": 0.0,
"w_rank": 510,
"l_value": 2.0,
"l_rank": 306,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 20.2,
"ip_rank": 480,
"h_value": 25.0,
"h_rank": 438,
"er_value": 7.0,
"er_rank": 570,
"hr_value": 1.0,
"hr_rank": 587,
"bb_value": 4.0,
"bb_rank": 618,
"k_value": 13.0,
"k_rank": 534,
"k_per_9_value": 5.66129,
"k_per_9_rank": 30,
"whip_value": 1.4032,
"whip_rank": null,
"war_value": 0.51,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0104,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 1.0104,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.9814,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0268,
"adjusted": 0
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9888,
"adjusted": 3
}
}
}
},
"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": 2,
"box_score_synced": true,
"BF": 24,
"Pitches": 103,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 4 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 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/20260828_TEX@MIL.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"
}
} |
| 20260828 | 20260828_TEX@MIL | home | Logan Henderson | Logan Henderson | True | 6.0 | 7.0 | 3 | 2 | 1 | -1 | 2/1 | 2/0 | 6/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.5961538461538463,
"WHIP": 0.8942307692307693,
"IP": 69.1,
"games_started": null,
"games_pitched": 13,
"role_avg_IP": 5.333,
"recent_avg_IP": 6.2,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.6538,
"sample_weight": 0.956,
"run_prevention_factor": 0.9444,
"strikeout_factor": 1.0535,
"walk_factor": 0.9254,
"homer_factor": 0.9664,
"regression_flag": "neutral",
"k_percent": 29.9,
"bb_percent": 5.3,
"woba": 0.262,
"xwoba": 0.257,
"barrel_percent": 7.6,
"hard_hit_percent": 38.2,
"whiff_percent": 27.1
},
"espn_rank": {
"rank": 54,
"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": 13.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7222,
"prior_weight": 0.2778
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "701656",
"report_date": "20260828",
"season_year": 2026,
"rows_used": 13,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.0,
"ER": 7.0,
"R": 7.0,
"H": 19.0,
"BB": 7.0,
"SO": 32.0,
"HR": 5.0,
"BF": 116.0,
"Pitches": 460.0
},
"per_game": {
"IP": 6.1,
"ER": 1.4,
"R": 1.4,
"H": 3.8,
"BB": 1.4,
"SO": 6.4,
"HR": 1.0,
"BF": 23.2,
"Pitches": 92.0
},
"rates": {
"ERA": 2.0323,
"WHIP": 0.8387,
"ER_per_IP": 0.22581,
"H_per_IP": 0.6129,
"BB_per_IP": 0.22581,
"SO_per_IP": 1.03226,
"HR_per_IP": 0.16129
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 56.1,
"ER": 14.0,
"R": 14.0,
"H": 38.0,
"BB": 12.0,
"SO": 63.0,
"HR": 9.0,
"BF": 215.0,
"Pitches": 858.0
},
"per_game": {
"IP": 5.2,
"ER": 1.4,
"R": 1.4,
"H": 3.8,
"BB": 1.2,
"SO": 6.3,
"HR": 0.9,
"BF": 21.5,
"Pitches": 85.8
},
"rates": {
"ERA": 2.2367,
"WHIP": 0.8876,
"ER_per_IP": 0.24852,
"H_per_IP": 0.67456,
"BB_per_IP": 0.21302,
"SO_per_IP": 1.11834,
"HR_per_IP": 0.15976
}
},
"season": {
"games": 13,
"totals": {
"IP": 69.1,
"ER": 20.0,
"R": 20.0,
"H": 48.0,
"BB": 14.0,
"SO": 79.0,
"HR": 10.0,
"BF": 264.0,
"Pitches": 1043.0
},
"per_game": {
"IP": 5.1,
"ER": 1.5385,
"R": 1.5385,
"H": 3.6923,
"BB": 1.0769,
"SO": 6.0769,
"HR": 0.7692,
"BF": 20.3077,
"Pitches": 80.2308
},
"rates": {
"ERA": 2.5962,
"WHIP": 0.8942,
"ER_per_IP": 0.28846,
"H_per_IP": 0.69231,
"BB_per_IP": 0.20192,
"SO_per_IP": 1.13942,
"HR_per_IP": 0.14423
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.881,
"predicted_H": 4.39,
"predicted_BB": 1.535,
"predicted_SO": 6.192,
"predicted_HR": 0.916,
"predicted_ERA": 2.8557,
"predicted_WHIP": 0.9997
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4674,
"form_weight": 0.5326,
"form_reliability": 0.7222,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 13.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7222,
"prior_weight": 0.2778
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.881,
"final": 1.9366,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.39,
"final": 3.273,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.535,
"final": 1.7523,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 6.192,
"final": 5.1675,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.916,
"final": 0.9553,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.8557,
"final": 2.8557,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.9997,
"final": 0.9997,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 56.1,
"ER": 14,
"H": 38,
"BB": 12,
"SO": 63,
"HR": 9,
"ERA": 2.2366863905325447,
"WHIP": 0.8875739644970415,
"K9": 10.06508875739645,
"HR9": 1.4378698224852071,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-22T00:00:00"
},
"recent_form_boost": 0.7449959505940812,
"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": 2.0,
"predicted_BB": 2.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 13.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7222,
"prior_weight": 0.2778
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 2,
"predicted_H": 2,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "701656",
"player_name": "Logan Henderson",
"position": "Starter",
"team": "MIL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.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": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"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": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.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": 4.0,
"after": 6.0,
"delta": 2.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": "MIL",
"games": 134,
"wins": 83,
"losses": 51,
"win_pct": 0.6194,
"runs_scored": 668.0,
"runs_allowed": 495.0,
"run_differential": 173.0,
"run_differential_per_game": 1.291,
"avg_runs_scored": 4.9851,
"avg_runs_allowed": 3.694,
"offense_index": 1.1171,
"defense_index": 1.208,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.6,
"avg_runs_allowed": 2.5,
"run_differential": 41.0
},
"available": true,
"quality_score": 0.3306
},
"opponent": {
"team": "TEX",
"games": 134,
"wins": 66,
"losses": 68,
"win_pct": 0.4925,
"runs_scored": 543.0,
"runs_allowed": 590.0,
"run_differential": -47.0,
"run_differential_per_game": -0.3507,
"avg_runs_scored": 4.0522,
"avg_runs_allowed": 4.403,
"offense_index": 0.9081,
"defense_index": 1.0135,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 4.1,
"run_differential": -3.0
},
"available": true,
"quality_score": -0.0496
},
"edges": {
"quality_edge": 0.3802,
"offense_edge": 0.1171,
"opponent_offense_edge": -0.0919,
"defense_strength": 0.208,
"opponent_defense_weakness": -0.0135,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0251,
"run_prevention": 0.9455,
"strikeout": 1.0188
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "701656",
"profile": {
"available": true,
"pitcher_id": "701656",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 239.0,
"k_percent": 29.9,
"bb_percent": 5.3,
"woba": 0.262,
"xwoba": 0.257,
"sweet_spot_percent": 34.1,
"barrel_batted_rate": 7.6,
"hard_hit_percent": 38.2,
"avg_best_speed": 77.1231,
"avg_hyper_speed": 94.0478,
"whiff_percent": 27.1,
"swing_percent": 53.5
},
"league_medians": {
"pa": 122.0,
"k_percent": 22.0,
"bb_percent": 9.2,
"woba": 0.315,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.8,
"avg_best_speed": 77.6508,
"avg_hyper_speed": 93.9187,
"whiff_percent": 25.2,
"swing_percent": 47.3
},
"components": {
"contact_quality": 0.8386,
"command_and_miss": 0.7979,
"regression_edge": 0.1429,
"xwoba_edge": 1.5429,
"barrel_edge": -0.1111,
"hard_hit_edge": -0.0571,
"whiff_edge": 0.2714,
"bb_edge": 0.975,
"pitch_design_score": -0.0928
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "701656",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 88,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 88.19496107158342,
"release_spin_rate": 2417.1147694148563,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 88.19496107158342,
"release_spin_rate": 2417.1147694148563,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 88.195,
"release_spin_rate": 2417.1148,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0928,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.6629,
"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.6538,
"sample_weight": 0.956,
"run_prevention_factor": 0.9444,
"strikeout_factor": 1.0535,
"walk_factor": 0.9254,
"homer_factor": 0.9664,
"woba_minus_xwoba": 0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "701656",
"espn_id": 4917878,
"player_name": "Logan Henderson",
"team": "MIL",
"role": "pitcher",
"espn_rank": 54,
"espn_total_ranked": 833,
"metrics": {
"espn_rank": 54,
"gp_value": 13.0,
"gp_rank": 466,
"gs_value": 13.0,
"gs_rank": 144,
"qs_value": 5.0,
"qs_rank": 105,
"era_value": 2.5961,
"era_rank": null,
"w_value": 8.0,
"w_rank": 49,
"l_value": 2.0,
"l_rank": 306,
"sv_value": 0.0,
"sv_rank": 243,
"hld_value": 0.0,
"hld_rank": 337,
"ip_value": 69.1,
"ip_rank": 170,
"h_value": 48.0,
"h_rank": 236,
"er_value": 20.0,
"er_rank": 291,
"hr_value": 10.0,
"hr_rank": 146,
"bb_value": 14.0,
"bb_rank": 371,
"k_value": 79.0,
"k_rank": 137,
"k_per_9_value": 10.254807,
"k_per_9_rank": 21,
"whip_value": 0.8942,
"whip_rank": null,
"war_value": 2.28,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9468,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9468,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.9287,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9679,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0511,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 96,
"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/20260828_TEX@MIL.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"
}
} |