| 20260822 | 20260822_ATL@MIL | away | Martín Pérez | Martín Pérez | True | 5.2 | 4.0 | -5 | 3 | 1 | -2 | 3/4 | 4/3 | 6/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.1526946107784433,
"WHIP": 1.194610778443114,
"IP": 111.1,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 5.1,
"recent_avg_IP": 5.2,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.191,
"sample_weight": 1.0,
"run_prevention_factor": 1.0162,
"strikeout_factor": 0.9554,
"walk_factor": 1.016,
"homer_factor": 0.9728,
"regression_flag": "negative_pitcher_regression",
"k_percent": 18.2,
"bb_percent": 9.9,
"woba": 0.29,
"xwoba": 0.322,
"barrel_percent": 5.2,
"hard_hit_percent": 37.2,
"whiff_percent": 21.6
},
"espn_rank": {
"rank": 43,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 111.1,
"season_ERA": 3.153,
"season_WHIP": 1.195,
"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": 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": "527048",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 7.0,
"R": 7.0,
"H": 22.0,
"BB": 9.0,
"SO": 18.0,
"HR": 1.0,
"BF": 106.0,
"Pitches": 364.0
},
"per_game": {
"IP": 5.1,
"ER": 1.4,
"R": 1.4,
"H": 4.4,
"BB": 1.8,
"SO": 3.6,
"HR": 0.2,
"BF": 21.2,
"Pitches": 72.8
},
"rates": {
"ERA": 2.4231,
"WHIP": 1.1923,
"ER_per_IP": 0.26923,
"H_per_IP": 0.84615,
"BB_per_IP": 0.34615,
"SO_per_IP": 0.69231,
"HR_per_IP": 0.03846
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.1,
"ER": 19.0,
"R": 20.0,
"H": 44.0,
"BB": 24.0,
"SO": 32.0,
"HR": 5.0,
"BF": 210.0,
"Pitches": 765.0
},
"per_game": {
"IP": 5.0,
"ER": 1.9,
"R": 2.0,
"H": 4.4,
"BB": 2.4,
"SO": 3.2,
"HR": 0.5,
"BF": 21.0,
"Pitches": 76.5
},
"rates": {
"ERA": 3.4662,
"WHIP": 1.3784,
"ER_per_IP": 0.38514,
"H_per_IP": 0.89189,
"BB_per_IP": 0.48649,
"SO_per_IP": 0.64865,
"HR_per_IP": 0.10135
}
},
"season": {
"games": 24,
"totals": {
"IP": 111.1,
"ER": 39.0,
"R": 40.0,
"H": 88.0,
"BB": 45.0,
"SO": 83.0,
"HR": 11.0,
"BF": 455.0,
"Pitches": 1721.0
},
"per_game": {
"IP": 4.2,
"ER": 1.625,
"R": 1.6667,
"H": 3.6667,
"BB": 1.875,
"SO": 3.4583,
"HR": 0.4583,
"BF": 18.9583,
"Pitches": 71.7083
},
"rates": {
"ERA": 3.1527,
"WHIP": 1.1946,
"ER_per_IP": 0.3503,
"H_per_IP": 0.79042,
"BB_per_IP": 0.40419,
"SO_per_IP": 0.74551,
"HR_per_IP": 0.0988
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 1.848,
"predicted_H": 4.522,
"predicted_BB": 2.073,
"predicted_SO": 3.8,
"predicted_HR": 0.444,
"predicted_ERA": 3.2076,
"predicted_WHIP": 1.2723
}
},
"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.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.848,
"final": 2.3351,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.522,
"final": 3.8784,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 2.073,
"final": 2.8878,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 3.8,
"final": 4.7302,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.444,
"final": 0.6791,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.2076,
"final": 3.2076,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2723,
"final": 1.2723,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 49.1,
"ER": 19,
"H": 44,
"BB": 24,
"SO": 32,
"HR": 5,
"ERA": 3.4662162162162167,
"WHIP": 1.3783783783783785,
"K9": 5.837837837837839,
"HR9": 0.9121621621621623,
"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-17T00:00:00"
},
"recent_form_boost": 0.8951970248470597,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_BB": 4.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": 5.2,
"predicted_ER": 3,
"predicted_H": 3,
"predicted_BB": 4,
"predicted_SO": 6,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "527048",
"player_name": "Mart\u00edn P\u00e9rez",
"position": "Starter",
"team": "ATL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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.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": 4.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ATL",
"games": 129,
"wins": 75,
"losses": 54,
"win_pct": 0.5814,
"runs_scored": 609.0,
"runs_allowed": 498.0,
"run_differential": 111.0,
"run_differential_per_game": 0.8605,
"avg_runs_scored": 4.7209,
"avg_runs_allowed": 3.8605,
"offense_index": 1.0519,
"defense_index": 1.1626,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.8,
"avg_runs_allowed": 3.4,
"run_differential": -6.0
},
"available": true,
"quality_score": 0.1396
},
"opponent": {
"team": "MIL",
"games": 129,
"wins": 80,
"losses": 49,
"win_pct": 0.6202,
"runs_scored": 644.0,
"runs_allowed": 484.0,
"run_differential": 160.0,
"run_differential_per_game": 1.2403,
"avg_runs_scored": 4.9922,
"avg_runs_allowed": 3.7519,
"offense_index": 1.1123,
"defense_index": 1.1962,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 3.7,
"run_differential": 20.0
},
"available": true,
"quality_score": 0.2892
},
"edges": {
"quality_edge": -0.1496,
"offense_edge": 0.0519,
"opponent_offense_edge": 0.1123,
"defense_strength": 0.1626,
"opponent_defense_weakness": -0.1962,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9944,
"run_prevention": 1.0092,
"strikeout": 0.9865
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "527048",
"profile": {
"available": true,
"pitcher_id": "527048",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 427.0,
"k_percent": 18.2,
"bb_percent": 9.9,
"woba": 0.29,
"xwoba": 0.322,
"sweet_spot_percent": 33.8,
"barrel_batted_rate": 5.2,
"hard_hit_percent": 37.2,
"avg_best_speed": 76.5546,
"avg_hyper_speed": 93.9406,
"whiff_percent": 21.6,
"swing_percent": 42.6
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.0862,
"command_and_miss": -0.4871,
"regression_edge": -0.9143,
"xwoba_edge": -0.3143,
"barrel_edge": 0.4222,
"hard_hit_edge": 0.0714,
"whiff_edge": -0.5429,
"bb_edge": -0.2,
"pitch_design_score": -0.2646
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "527048",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 71,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 71,
"pitch_usage": 0.0,
"release_speed": 85.19488606031452,
"release_spin_rate": 1968.0742990728688,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 71,
"pitch_usage": 0.0,
"release_speed": 85.19488606031452,
"release_spin_rate": 1968.0742990728688,
"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.1949,
"release_spin_rate": 1968.0743,
"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.2646,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.8901,
"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.191,
"sample_weight": 1.0,
"run_prevention_factor": 1.0162,
"strikeout_factor": 0.9554,
"walk_factor": 1.016,
"homer_factor": 0.9728,
"woba_minus_xwoba": -0.032,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "527048",
"espn_id": 31098,
"player_name": "Martin Perez",
"team": "ATL",
"role": "pitcher",
"espn_rank": 43,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 43,
"gp_value": 24.0,
"gp_rank": 287,
"gs_value": 20.0,
"gs_rank": 85,
"qs_value": 4.0,
"qs_rank": 116,
"era_value": 3.1526,
"era_rank": null,
"w_value": 8.0,
"w_rank": 46,
"l_value": 7.0,
"l_rank": 64,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 111.1,
"ip_rank": 93,
"h_value": 88.0,
"h_rank": 110,
"er_value": 39.0,
"er_rank": 133,
"hr_value": 11.0,
"hr_rank": 130,
"bb_value": 45.0,
"bb_rank": 41,
"k_value": 83.0,
"k_rank": 115,
"k_per_9_value": 6.709581,
"k_per_9_rank": 33,
"whip_value": 1.1946,
"whip_rank": null,
"war_value": 2.53,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0162,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0162,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.016,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9728,
"adjusted": 0
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9554,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 4,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"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."
}
],
"provenance": {
"prediction": "output/games/20260822_ATL@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"
}
} |
| 20260822 | 20260822_ATL@MIL | home | Logan Henderson | Logan Henderson | True | 6.0 | 6.0 | 0 | 1 | 1 | 0 | 4/5 | 1/2 | 7/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.6999999999999997,
"WHIP": 0.8684210526315789,
"IP": 63.1,
"games_started": null,
"games_pitched": 12,
"role_avg_IP": 5.278,
"recent_avg_IP": 6.0,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.6222,
"sample_weight": 0.86,
"run_prevention_factor": 0.9471,
"strikeout_factor": 1.058,
"walk_factor": 0.9295,
"homer_factor": 0.9814,
"regression_flag": "neutral",
"k_percent": 31.3,
"bb_percent": 5.0,
"woba": 0.262,
"xwoba": 0.256,
"barrel_percent": 8.6,
"hard_hit_percent": 37.5,
"whiff_percent": 28.1
},
"espn_rank": {
"rank": 69,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 6.0,
"season_IP": 63.1,
"season_ERA": 2.7,
"season_WHIP": 0.868,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7059,
"prior_weight": 0.2941
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "701656",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 12,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 8.0,
"R": 8.0,
"H": 19.0,
"BB": 5.0,
"SO": 37.0,
"HR": 7.0,
"BF": 112.0,
"Pitches": 440.0
},
"per_game": {
"IP": 6.0,
"ER": 1.6,
"R": 1.6,
"H": 3.8,
"BB": 1.0,
"SO": 7.4,
"HR": 1.4,
"BF": 22.4,
"Pitches": 88.0
},
"rates": {
"ERA": 2.4,
"WHIP": 0.8,
"ER_per_IP": 0.26667,
"H_per_IP": 0.63333,
"BB_per_IP": 0.16667,
"SO_per_IP": 1.23333,
"HR_per_IP": 0.23333
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.1,
"ER": 15.0,
"R": 15.0,
"H": 37.0,
"BB": 11.0,
"SO": 64.0,
"HR": 10.0,
"BF": 210.0,
"Pitches": 832.0
},
"per_game": {
"IP": 5.2,
"ER": 1.5,
"R": 1.5,
"H": 3.7,
"BB": 1.1,
"SO": 6.4,
"HR": 1.0,
"BF": 21.0,
"Pitches": 83.2
},
"rates": {
"ERA": 2.4398,
"WHIP": 0.8675,
"ER_per_IP": 0.27108,
"H_per_IP": 0.66867,
"BB_per_IP": 0.1988,
"SO_per_IP": 1.15663,
"HR_per_IP": 0.18072
}
},
"season": {
"games": 12,
"totals": {
"IP": 63.1,
"ER": 19.0,
"R": 19.0,
"H": 43.0,
"BB": 12.0,
"SO": 75.0,
"HR": 10.0,
"BF": 240.0,
"Pitches": 943.0
},
"per_game": {
"IP": 5.1,
"ER": 1.5833,
"R": 1.5833,
"H": 3.5833,
"BB": 1.0,
"SO": 6.25,
"HR": 0.8333,
"BF": 20.0,
"Pitches": 78.5833
},
"rates": {
"ERA": 2.7,
"WHIP": 0.8684,
"ER_per_IP": 0.3,
"H_per_IP": 0.67895,
"BB_per_IP": 0.18947,
"SO_per_IP": 1.18421,
"HR_per_IP": 0.15789
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 1.99,
"predicted_H": 4.362,
"predicted_BB": 1.377,
"predicted_SO": 6.548,
"predicted_HR": 1.075,
"predicted_ERA": 3.0758,
"predicted_WHIP": 0.9855
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4743,
"form_weight": 0.5257,
"form_reliability": 0.7059,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7059,
"prior_weight": 0.2941
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.99,
"final": 1.5205,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.362,
"final": 4.1903,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.377,
"final": 1.1982,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 6.548,
"final": 6.7624,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.075,
"final": 1.0394,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.0758,
"final": 3.0758,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.9855,
"final": 0.9855,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.1,
"ER": 15,
"H": 37,
"BB": 11,
"SO": 64,
"HR": 10,
"ERA": 2.4397590361445785,
"WHIP": 0.8674698795180724,
"K9": 10.409638554216869,
"HR9": 1.6265060240963858,
"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-16T00:00:00"
},
"recent_form_boost": 0.7669478796174927,
"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": 1.0,
"predicted_SO": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7059,
"prior_weight": 0.2941
}
},
{
"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": 1,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "701656",
"player_name": "Logan Henderson",
"position": "Starter",
"team": "MIL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 4.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": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 6.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": 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": 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": {}
},
{
"index": 3,
"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": 1.0,
"predicted_IP": 6.0,
"predicted_R": 1.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": 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": 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": 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": 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": "MIL",
"games": 129,
"wins": 80,
"losses": 49,
"win_pct": 0.6202,
"runs_scored": 644.0,
"runs_allowed": 484.0,
"run_differential": 160.0,
"run_differential_per_game": 1.2403,
"avg_runs_scored": 4.9922,
"avg_runs_allowed": 3.7519,
"offense_index": 1.1123,
"defense_index": 1.1962,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 3.7,
"run_differential": 20.0
},
"available": true,
"quality_score": 0.2892
},
"opponent": {
"team": "ATL",
"games": 129,
"wins": 75,
"losses": 54,
"win_pct": 0.5814,
"runs_scored": 609.0,
"runs_allowed": 498.0,
"run_differential": 111.0,
"run_differential_per_game": 0.8605,
"avg_runs_scored": 4.7209,
"avg_runs_allowed": 3.8605,
"offense_index": 1.0519,
"defense_index": 1.1626,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.8,
"avg_runs_allowed": 3.4,
"run_differential": -6.0
},
"available": true,
"quality_score": 0.1396
},
"edges": {
"quality_edge": 0.1496,
"offense_edge": 0.1123,
"opponent_offense_edge": 0.0519,
"defense_strength": 0.1962,
"opponent_defense_weakness": -0.1626,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0098,
"run_prevention": 0.9812,
"strikeout": 1.0003
},
"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": 215.0,
"k_percent": 31.3,
"bb_percent": 5.0,
"woba": 0.262,
"xwoba": 0.256,
"sweet_spot_percent": 34.2,
"barrel_batted_rate": 8.6,
"hard_hit_percent": 37.5,
"avg_best_speed": 76.1739,
"avg_hyper_speed": 93.928,
"whiff_percent": 28.1,
"swing_percent": 53.9
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.8459,
"command_and_miss": 0.925,
"regression_edge": 0.1714,
"xwoba_edge": 1.5714,
"barrel_edge": -0.3333,
"hard_hit_edge": 0.0286,
"whiff_edge": 0.3857,
"bb_edge": 1.025,
"pitch_design_score": -0.0987
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "701656",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 84,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 84,
"pitch_usage": 0.0,
"release_speed": 88.15725958542238,
"release_spin_rate": 2417.4135705444573,
"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": 84,
"pitch_usage": 0.0,
"release_speed": 88.15725958542238,
"release_spin_rate": 2417.4135705444573,
"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.1573,
"release_spin_rate": 2417.4136,
"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.0987,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.7051,
"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.6222,
"sample_weight": 0.86,
"run_prevention_factor": 0.9471,
"strikeout_factor": 1.058,
"walk_factor": 0.9295,
"homer_factor": 0.9814,
"woba_minus_xwoba": 0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "701656",
"espn_id": 4917878,
"player_name": "Logan Henderson",
"team": "MIL",
"role": "pitcher",
"espn_rank": 69,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 69,
"gp_value": 12.0,
"gp_rank": 468,
"gs_value": 12.0,
"gs_rank": 145,
"qs_value": 4.0,
"qs_rank": 116,
"era_value": 2.7,
"era_rank": null,
"w_value": 7.0,
"w_rank": 67,
"l_value": 2.0,
"l_rank": 295,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 63.1,
"ip_rank": 184,
"h_value": 43.0,
"h_rank": 257,
"er_value": 19.0,
"er_rank": 299,
"hr_value": 10.0,
"hr_rank": 143,
"bb_value": 12.0,
"bb_rank": 412,
"k_value": 75.0,
"k_rank": 136,
"k_per_9_value": 10.657895,
"k_per_9_rank": 19,
"whip_value": 0.8684,
"whip_rank": null,
"war_value": 2.04,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9545,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9545,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.9394,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.984,
"adjusted": 1
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0499,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 7,
"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."
}
],
"provenance": {
"prediction": "output/games/20260822_ATL@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"
}
} |
| 20260822 | 20260822_CHC@SEA | away | David Peterson | David Peterson | True | 4.2 | 6.0 | 4 | 3 | 2 | -1 | 3/4 | 3/2 | 3/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.287833827893175,
"WHIP": 1.5311572700296736,
"IP": 112.1,
"games_started": null,
"games_pitched": 25,
"role_avg_IP": 5.021,
"recent_avg_IP": 5.733,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3934,
"sample_weight": 1.0,
"run_prevention_factor": 1.0334,
"strikeout_factor": 0.9571,
"walk_factor": 1.004,
"homer_factor": 1.0324,
"regression_flag": "neutral",
"k_percent": 18.7,
"bb_percent": 9.3,
"woba": 0.335,
"xwoba": 0.34,
"barrel_percent": 6.4,
"hard_hit_percent": 41.2,
"whiff_percent": 21.4
},
"espn_rank": {
"rank": 799,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "656849",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 25,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.1,
"ER": 7.0,
"R": 9.0,
"H": 24.0,
"BB": 9.0,
"SO": 21.0,
"HR": 2.0,
"BF": 101.0,
"Pitches": 384.0
},
"per_game": {
"IP": 4.2,
"ER": 1.4,
"R": 1.8,
"H": 4.8,
"BB": 1.8,
"SO": 4.2,
"HR": 0.4,
"BF": 20.2,
"Pitches": 76.8
},
"rates": {
"ERA": 2.7,
"WHIP": 1.4143,
"ER_per_IP": 0.3,
"H_per_IP": 1.02857,
"BB_per_IP": 0.38571,
"SO_per_IP": 0.9,
"HR_per_IP": 0.08571
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.1,
"ER": 24.0,
"R": 27.0,
"H": 49.0,
"BB": 19.0,
"SO": 37.0,
"HR": 6.0,
"BF": 208.0,
"Pitches": 794.0
},
"per_game": {
"IP": 4.2,
"ER": 2.4,
"R": 2.7,
"H": 4.9,
"BB": 1.9,
"SO": 3.7,
"HR": 0.6,
"BF": 20.8,
"Pitches": 79.4
},
"rates": {
"ERA": 4.469,
"WHIP": 1.4069,
"ER_per_IP": 0.49655,
"H_per_IP": 1.01379,
"BB_per_IP": 0.3931,
"SO_per_IP": 0.76552,
"HR_per_IP": 0.12414
}
},
"season": {
"games": 25,
"totals": {
"IP": 112.1,
"ER": 66.0,
"R": 73.0,
"H": 125.0,
"BB": 47.0,
"SO": 95.0,
"HR": 11.0,
"BF": 507.0,
"Pitches": 1852.0
},
"per_game": {
"IP": 4.1,
"ER": 2.64,
"R": 2.92,
"H": 5.0,
"BB": 1.88,
"SO": 3.8,
"HR": 0.44,
"BF": 20.28,
"Pitches": 74.08
},
"rates": {
"ERA": 5.2878,
"WHIP": 1.5312,
"ER_per_IP": 0.58754,
"H_per_IP": 1.11276,
"BB_per_IP": 0.4184,
"SO_per_IP": 0.8457,
"HR_per_IP": 0.09792
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.073,
"predicted_H": 4.861,
"predicted_BB": 1.842,
"predicted_SO": 4.062,
"predicted_HR": 0.516,
"predicted_ERA": 3.9507,
"predicted_WHIP": 1.4195
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4204,
"form_weight": 0.5796,
"form_reliability": 0.8333,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 4.2,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.073,
"final": 2.0423,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.861,
"final": 3.6581,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.842,
"final": 2.3289,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.062,
"final": 3.6155,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.516,
"final": 0.2991,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.9507,
"final": 3.9507,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4195,
"final": 1.4195,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 48.1,
"ER": 24,
"H": 49,
"BB": 19,
"SO": 37,
"HR": 6,
"ERA": 4.468965517241379,
"WHIP": 1.406896551724138,
"K9": 6.889655172413794,
"HR9": 1.1172413793103448,
"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-17T00:00:00"
},
"recent_form_boost": 1.0087192755460341,
"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": 3.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 2,
"predicted_H": 2,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 0
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 3,
"predicted_H": 3,
"predicted_BB": 3,
"predicted_SO": 3,
"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": 3.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"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": 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": 4.2,
"delta": -1.1333,
"percent_delta": -0.2125,
"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": 4.2,
"delta": -1.1333,
"percent_delta": -0.2125,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"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": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 2,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 3.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": 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.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 4.2,
"delta": -1.1333,
"percent_delta": -0.2125,
"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": 3,
"boosted_metrics": 2,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 3,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 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": 129,
"wins": 74,
"losses": 55,
"win_pct": 0.5736,
"runs_scored": 661.0,
"runs_allowed": 562.0,
"run_differential": 99.0,
"run_differential_per_game": 0.7674,
"avg_runs_scored": 5.124,
"avg_runs_allowed": 4.3566,
"offense_index": 1.1473,
"defense_index": 1.0252,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 5.5,
"run_differential": -8.0
},
"available": true,
"quality_score": 0.1571
},
"opponent": {
"team": "SEA",
"games": 129,
"wins": 61,
"losses": 68,
"win_pct": 0.4729,
"runs_scored": 506.0,
"runs_allowed": 551.0,
"run_differential": -45.0,
"run_differential_per_game": -0.3488,
"avg_runs_scored": 3.9225,
"avg_runs_allowed": 4.2713,
"offense_index": 0.8782,
"defense_index": 1.0457,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 7.0,
"run_differential": -26.0
},
"available": true,
"quality_score": -0.066
},
"edges": {
"quality_edge": 0.2231,
"offense_edge": 0.1473,
"opponent_offense_edge": -0.1218,
"defense_strength": 0.0252,
"opponent_defense_weakness": -0.0457,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0146,
"run_prevention": 0.9668,
"strikeout": 1.0164
},
"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": 499.0,
"k_percent": 18.7,
"bb_percent": 9.3,
"woba": 0.335,
"xwoba": 0.34,
"sweet_spot_percent": 34.5,
"barrel_batted_rate": 6.4,
"hard_hit_percent": 41.2,
"avg_best_speed": 78.4475,
"avg_hyper_speed": 94.4963,
"whiff_percent": 21.4,
"swing_percent": 47.0
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.4662,
"command_and_miss": -0.435,
"regression_edge": -0.1429,
"xwoba_edge": -0.8286,
"barrel_edge": 0.1556,
"hard_hit_edge": -0.5,
"whiff_edge": -0.5714,
"bb_edge": -0.05,
"pitch_design_score": -0.062
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "656849",
"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": 88.8123884468767,
"release_spin_rate": 2131.364618284935,
"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": 88.8123884468767,
"release_spin_rate": 2131.364618284935,
"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.8124,
"release_spin_rate": 2131.3646,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.062,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4431,
"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.3934,
"sample_weight": 1.0,
"run_prevention_factor": 1.0334,
"strikeout_factor": 0.9571,
"walk_factor": 1.004,
"homer_factor": 1.0324,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "656849",
"espn_id": 40921,
"player_name": "David Peterson",
"team": "CHC",
"role": "pitcher",
"espn_rank": 799,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 799,
"gp_value": 25.0,
"gp_rank": 253,
"gs_value": 16.0,
"gs_rank": 114,
"qs_value": 2.0,
"qs_rank": 149,
"era_value": 5.2878,
"era_rank": null,
"w_value": 7.0,
"w_rank": 67,
"l_value": 7.0,
"l_rank": 64,
"sv_value": 1.0,
"sv_rank": 123,
"hld_value": 1.0,
"hld_rank": 250,
"ip_value": 112.1,
"ip_rank": 92,
"h_value": 125.0,
"h_rank": 36,
"er_value": 66.0,
"er_rank": 19,
"hr_value": 11.0,
"hr_rank": 130,
"bb_value": 47.0,
"bb_rank": 30,
"k_value": 95.0,
"k_rank": 93,
"k_per_9_value": 7.611276,
"k_per_9_rank": 27,
"whip_value": 1.5311,
"whip_rank": null,
"war_value": -0.93,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0334,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 1.0334,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.004,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0324,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9571,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 20,
"Pitches": 84,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260822_CHC@SEA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_CHC@SEA | home | Kade Anderson | Kade Anderson | True | 0.0 | 5.2 | 17 | 2 | 3 | 1 | 5/5 | 2/2 | 0/5 | Last 10 before this game (0 available)No pregame recent-game rows were available. {
"model_context": {
"embedded_season": {
"ERA": null,
"WHIP": null,
"IP": null,
"games_started": null,
"games_pitched": null,
"role_avg_IP": null,
"recent_avg_IP": null,
"last_start_IP": null,
"projection_source": "league_average_stable_fallback"
},
"savant": {
"quality_score": null,
"sample_weight": null,
"run_prevention_factor": null,
"strikeout_factor": null,
"walk_factor": null,
"homer_factor": null,
"regression_flag": null,
"k_percent": null,
"bb_percent": null,
"woba": null,
"xwoba": null,
"barrel_percent": null,
"hard_hit_percent": null,
"whiff_percent": null
},
"espn_rank": {
"rank": null,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 0.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.0,
"prior_weight": 1.0
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "807739",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 0,
"reference_playing_time": 0.1,
"windows": {
"last_5": {
"games": 0,
"totals": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"per_game": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"rates": {
"ERA": null,
"WHIP": null,
"ER_per_IP": null,
"H_per_IP": null,
"BB_per_IP": null,
"SO_per_IP": null,
"HR_per_IP": null
}
},
"last_10": {
"games": 0,
"totals": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"per_game": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"rates": {
"ERA": null,
"WHIP": null,
"ER_per_IP": null,
"H_per_IP": null,
"BB_per_IP": null,
"SO_per_IP": null,
"HR_per_IP": null
}
},
"season": {
"games": 0,
"totals": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"per_game": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"rates": {
"ERA": null,
"WHIP": null,
"ER_per_IP": null,
"H_per_IP": null,
"BB_per_IP": null,
"SO_per_IP": null,
"HR_per_IP": null
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 0.1,
"predicted_ER": 0.167,
"predicted_H": 0.325,
"predicted_BB": 0.122,
"predicted_SO": 0.317,
"predicted_HR": 0.049,
"predicted_ERA": 4.5204,
"predicted_WHIP": 1.3414
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.7725,
"form_weight": 0.2275,
"form_reliability": 0.0,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 0.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.0,
"prior_weight": 1.0
},
"applied_metrics": {
"predicted_IP": {
"model": 0.1,
"form": 0.1,
"final": 0.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 0.167,
"final": 1.583,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 0.325,
"final": 3.9364,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 0.122,
"final": 1.5728,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 0.317,
"final": 2.3896,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.049,
"final": 0.0111,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5204,
"final": 4.5204,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3414,
"final": 1.3414,
"source": "form_only"
}
}
},
"recent_form_analysis": null,
"recent_form_boost": null,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 0.1,
"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": 0.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.0,
"prior_weight": 1.0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "807739",
"player_name": "Kade Anderson",
"position": "Starter",
"team": "SEA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 0.1,
"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": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 0.0,
"predicted_R": 2.0,
"predicted_SO": 0.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": 0.1,
"after": 0.0,
"delta": -0.1,
"percent_delta": -1.0,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 0.0,
"delta": -3.0,
"percent_delta": -1.0,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 0,
"deboosted_metrics": 2,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 0.0,
"delta": -3.0,
"percent_delta": -1.0,
"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": 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": 0.1,
"after": 0.0,
"delta": -0.1,
"percent_delta": -1.0,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 0.0,
"delta": -3.0,
"percent_delta": -1.0,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 0,
"deboosted_metrics": 2,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 0.0,
"delta": -3.0,
"percent_delta": -1.0,
"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": 129,
"wins": 61,
"losses": 68,
"win_pct": 0.4729,
"runs_scored": 506.0,
"runs_allowed": 551.0,
"run_differential": -45.0,
"run_differential_per_game": -0.3488,
"avg_runs_scored": 3.9225,
"avg_runs_allowed": 4.2713,
"offense_index": 0.8782,
"defense_index": 1.0457,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 7.0,
"run_differential": -26.0
},
"available": true,
"quality_score": -0.066
},
"opponent": {
"team": "CHC",
"games": 129,
"wins": 74,
"losses": 55,
"win_pct": 0.5736,
"runs_scored": 661.0,
"runs_allowed": 562.0,
"run_differential": 99.0,
"run_differential_per_game": 0.7674,
"avg_runs_scored": 5.124,
"avg_runs_allowed": 4.3566,
"offense_index": 1.1473,
"defense_index": 1.0252,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 5.5,
"run_differential": -8.0
},
"available": true,
"quality_score": 0.1571
},
"edges": {
"quality_edge": -0.2231,
"offense_edge": -0.1218,
"opponent_offense_edge": 0.1473,
"defense_strength": 0.0457,
"opponent_defense_weakness": -0.0252,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9866,
"run_prevention": 1.0302,
"strikeout": 0.9815
}
},
"simulation_box_score_stats": {
"predicted_IP": 0.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 0,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 7,
"Pitches": 23,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "NO_PRIOR_HISTORY",
"severity": "critical",
"title": "No prior appearances in the source dataset",
"detail": "The model had no row-level pitching history before this game; any precise box-score line should carry a strong uncertainty warning."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by +17 outs from the projected workload."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260822_CHC@SEA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_CIN@ARI | away | Rhett Lowder | Rhett Lowder | True | 4.2 | 6.0 | 4 | 4 | 3 | -1 | 4/6 | 6/1 | 8/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.1683168316831685,
"WHIP": 1.4851485148514851,
"IP": 101.0,
"games_started": null,
"games_pitched": 22,
"role_avg_IP": 4.947,
"recent_avg_IP": 5.8,
"last_start_IP": 6.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.5535,
"sample_weight": 1.0,
"run_prevention_factor": 1.047,
"strikeout_factor": 0.9451,
"walk_factor": 1.004,
"homer_factor": 1.075,
"regression_flag": "neutral",
"k_percent": 18.1,
"bb_percent": 9.3,
"woba": 0.338,
"xwoba": 0.346,
"barrel_percent": 9.6,
"hard_hit_percent": 37.8,
"whiff_percent": 19.9
},
"espn_rank": {
"rank": 199,
"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": "695076",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 22,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.0,
"ER": 12.0,
"R": 12.0,
"H": 25.0,
"BB": 7.0,
"SO": 21.0,
"HR": 4.0,
"BF": 117.0,
"Pitches": 454.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.4,
"H": 5.0,
"BB": 1.4,
"SO": 4.2,
"HR": 0.8,
"BF": 23.4,
"Pitches": 90.8
},
"rates": {
"ERA": 3.7241,
"WHIP": 1.1034,
"ER_per_IP": 0.41379,
"H_per_IP": 0.86207,
"BB_per_IP": 0.24138,
"SO_per_IP": 0.72414,
"HR_per_IP": 0.13793
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 43.0,
"ER": 27.0,
"R": 27.0,
"H": 52.0,
"BB": 13.0,
"SO": 34.0,
"HR": 6.0,
"BF": 193.0,
"Pitches": 690.0
},
"per_game": {
"IP": 4.1,
"ER": 2.7,
"R": 2.7,
"H": 5.2,
"BB": 1.3,
"SO": 3.4,
"HR": 0.6,
"BF": 19.3,
"Pitches": 69.0
},
"rates": {
"ERA": 5.6512,
"WHIP": 1.5116,
"ER_per_IP": 0.62791,
"H_per_IP": 1.2093,
"BB_per_IP": 0.30233,
"SO_per_IP": 0.7907,
"HR_per_IP": 0.13953
}
},
"season": {
"games": 22,
"totals": {
"IP": 101.0,
"ER": 58.0,
"R": 59.0,
"H": 108.0,
"BB": 42.0,
"SO": 82.0,
"HR": 13.0,
"BF": 452.0,
"Pitches": 1702.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6364,
"R": 2.6818,
"H": 4.9091,
"BB": 1.9091,
"SO": 3.7273,
"HR": 0.5909,
"BF": 20.5455,
"Pitches": 77.3636
},
"rates": {
"ERA": 5.1683,
"WHIP": 1.4851,
"ER_per_IP": 0.57426,
"H_per_IP": 1.06931,
"BB_per_IP": 0.41584,
"SO_per_IP": 0.81188,
"HR_per_IP": 0.12871
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.619,
"predicted_H": 5.142,
"predicted_BB": 1.571,
"predicted_SO": 4.046,
"predicted_HR": 0.702,
"predicted_ERA": 4.6565,
"predicted_WHIP": 1.3261
}
},
"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.0,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.619,
"final": 3.2104,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.142,
"final": 4.6529,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 6.0,
"form": 1.571,
"final": 3.4677,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 4.046,
"final": 5.7393,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.702,
"final": 0.4014,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.6565,
"final": 4.6565,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3261,
"final": 1.3261,
"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": 43.0,
"ER": 27,
"H": 52,
"BB": 13,
"SO": 34,
"HR": 6,
"ERA": 5.651162790697675,
"WHIP": 1.5116279069767442,
"K9": 7.116279069767442,
"HR9": 1.255813953488372,
"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-17T00:00:00"
},
"recent_form_boost": 1.144334752691183,
"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": 4.0,
"predicted_BB": 6.0,
"predicted_SO": 8.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
}
},
{
"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": 4,
"predicted_BB": 6,
"predicted_SO": 8,
"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": 6.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 6.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.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": 6.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 4.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.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": "CIN",
"games": 129,
"wins": 61,
"losses": 68,
"win_pct": 0.4729,
"runs_scored": 523.0,
"runs_allowed": 621.0,
"run_differential": -98.0,
"run_differential_per_game": -0.7597,
"avg_runs_scored": 4.0543,
"avg_runs_allowed": 4.814,
"offense_index": 0.9076,
"defense_index": 0.9279,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 5.6,
"run_differential": -20.0
},
"available": true,
"quality_score": -0.1516
},
"opponent": {
"team": "ARI",
"games": 129,
"wins": 68,
"losses": 61,
"win_pct": 0.5271,
"runs_scored": 588.0,
"runs_allowed": 575.0,
"run_differential": 13.0,
"run_differential_per_game": 0.1008,
"avg_runs_scored": 4.5581,
"avg_runs_allowed": 4.4574,
"offense_index": 1.0204,
"defense_index": 1.0022,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.1,
"avg_runs_allowed": 4.3,
"run_differential": 8.0
},
"available": true,
"quality_score": 0.0354
},
"edges": {
"quality_edge": -0.187,
"offense_edge": -0.0924,
"opponent_offense_edge": 0.0204,
"defense_strength": -0.0721,
"opponent_defense_weakness": -0.0022,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9895,
"run_prevention": 1.0198,
"strikeout": 0.9928
},
"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": 412.0,
"k_percent": 18.1,
"bb_percent": 9.3,
"woba": 0.338,
"xwoba": 0.346,
"sweet_spot_percent": 36.2,
"barrel_batted_rate": 9.6,
"hard_hit_percent": 37.8,
"avg_best_speed": 80.4007,
"avg_hyper_speed": 94.2569,
"whiff_percent": 19.9,
"swing_percent": 45.1
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.687,
"command_and_miss": -0.5486,
"regression_edge": -0.2286,
"xwoba_edge": -1.0,
"barrel_edge": -0.5556,
"hard_hit_edge": -0.0143,
"whiff_edge": -0.7857,
"bb_edge": -0.05,
"pitch_design_score": -0.0416
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "695076",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 80,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 80,
"pitch_usage": 0.0,
"release_speed": 89.17736124988288,
"release_spin_rate": 2344.0188135457474,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 80,
"pitch_usage": 0.0,
"release_speed": 89.17736124988288,
"release_spin_rate": 2344.0188135457474,
"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.1774,
"release_spin_rate": 2344.0188,
"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.0416,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2971,
"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.5535,
"sample_weight": 1.0,
"run_prevention_factor": 1.047,
"strikeout_factor": 0.9451,
"walk_factor": 1.004,
"homer_factor": 1.075,
"woba_minus_xwoba": -0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "695076",
"espn_id": 4758873,
"player_name": "Rhett Lowder",
"team": "CIN",
"role": "pitcher",
"espn_rank": 199,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 199,
"gp_value": 22.0,
"gp_rank": 329,
"gs_value": 19.0,
"gs_rank": 92,
"qs_value": 5.0,
"qs_rank": 98,
"era_value": 5.1683,
"era_rank": null,
"w_value": 4.0,
"w_rank": 164,
"l_value": 8.0,
"l_rank": 34,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 101.0,
"ip_rank": 103,
"h_value": 108.0,
"h_rank": 81,
"er_value": 58.0,
"er_rank": 51,
"hr_value": 13.0,
"hr_rank": 98,
"bb_value": 42.0,
"bb_rank": 50,
"k_value": 82.0,
"k_rank": 120,
"k_per_9_value": 7.3069305,
"k_per_9_rank": 31,
"whip_value": 1.4851,
"whip_rank": null,
"war_value": 0.77,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.047,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.047,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.004,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.075,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9451,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 4,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 6,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 95,
"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."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260822_CIN@ARI.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_CIN@ARI | home | Michael Soroka | Michael Soroka | True | 6.0 | 3.1 | -8 | 3 | 6 | 3 | 5/6 | 3/3 | 3/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.9347826086956523,
"WHIP": 1.108695652173913,
"IP": 92.0,
"games_started": null,
"games_pitched": 17,
"role_avg_IP": 5.412,
"recent_avg_IP": 5.0,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0094,
"sample_weight": 1.0,
"run_prevention_factor": 0.9992,
"strikeout_factor": 0.988,
"walk_factor": 0.93,
"homer_factor": 0.9877,
"regression_flag": "negative_pitcher_regression",
"k_percent": 23.5,
"bb_percent": 5.6,
"woba": 0.281,
"xwoba": 0.312,
"barrel_percent": 8.0,
"hard_hit_percent": 32.6,
"whiff_percent": 22.0
},
"espn_rank": {
"rank": 46,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 92.0,
"season_ERA": 2.935,
"season_WHIP": 1.109,
"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": 17.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7727,
"prior_weight": 0.2273
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "647336",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 17,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 4.0,
"R": 4.0,
"H": 16.0,
"BB": 6.0,
"SO": 22.0,
"HR": 1.0,
"BF": 95.0,
"Pitches": 359.0
},
"per_game": {
"IP": 5.0,
"ER": 0.8,
"R": 0.8,
"H": 3.2,
"BB": 1.2,
"SO": 4.4,
"HR": 0.2,
"BF": 19.0,
"Pitches": 71.8
},
"rates": {
"ERA": 1.44,
"WHIP": 0.88,
"ER_per_IP": 0.16,
"H_per_IP": 0.64,
"BB_per_IP": 0.24,
"SO_per_IP": 0.88,
"HR_per_IP": 0.04
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.0,
"ER": 13.0,
"R": 13.0,
"H": 39.0,
"BB": 10.0,
"SO": 46.0,
"HR": 2.0,
"BF": 212.0,
"Pitches": 807.0
},
"per_game": {
"IP": 5.1,
"ER": 1.3,
"R": 1.3,
"H": 3.9,
"BB": 1.0,
"SO": 4.6,
"HR": 0.2,
"BF": 21.2,
"Pitches": 80.7
},
"rates": {
"ERA": 2.1273,
"WHIP": 0.8909,
"ER_per_IP": 0.23636,
"H_per_IP": 0.70909,
"BB_per_IP": 0.18182,
"SO_per_IP": 0.83636,
"HR_per_IP": 0.03636
}
},
"season": {
"games": 17,
"totals": {
"IP": 92.0,
"ER": 30.0,
"R": 30.0,
"H": 81.0,
"BB": 21.0,
"SO": 88.0,
"HR": 6.0,
"BF": 375.0,
"Pitches": 1447.0
},
"per_game": {
"IP": 5.1,
"ER": 1.7647,
"R": 1.7647,
"H": 4.7647,
"BB": 1.2353,
"SO": 5.1765,
"HR": 0.3529,
"BF": 22.0588,
"Pitches": 85.1176
},
"rates": {
"ERA": 2.9348,
"WHIP": 1.1087,
"ER_per_IP": 0.32609,
"H_per_IP": 0.88043,
"BB_per_IP": 0.22826,
"SO_per_IP": 0.95652,
"HR_per_IP": 0.06522
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 1.504,
"predicted_H": 4.086,
"predicted_BB": 1.329,
"predicted_SO": 4.743,
"predicted_HR": 0.357,
"predicted_ERA": 2.5571,
"predicted_WHIP": 1.0232
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.446,
"form_weight": 0.554,
"form_reliability": 0.7727,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 17.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7727,
"prior_weight": 0.2273
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.504,
"final": 2.1713,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.086,
"final": 4.4937,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.329,
"final": 2.0743,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.743,
"final": 3.5195,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.357,
"final": 0.6438,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.5571,
"final": 2.5571,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0232,
"final": 1.0232,
"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": 13,
"H": 39,
"BB": 10,
"SO": 46,
"HR": 2,
"ERA": 2.1272727272727274,
"WHIP": 0.8909090909090909,
"K9": 7.527272727272727,
"HR9": 0.32727272727272727,
"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-16T00:00:00"
},
"recent_form_boost": 0.732379150154185,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 3.0,
"predicted_SO": 2.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 17.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7727,
"prior_weight": 0.2273
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3,
"predicted_H": 5,
"predicted_BB": 3,
"predicted_SO": 2,
"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": 6.0,
"predicted_ER": 3,
"predicted_H": 5,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "647336",
"player_name": "Michael Soroka",
"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": 3.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 2.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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 6.0,
"delta": 0.3333,
"percent_delta": 0.0588,
"direction": "boost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 6.0,
"delta": 0.3333,
"percent_delta": 0.0588,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"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": 3.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 5.0,
"delta": 3.0,
"percent_delta": 1.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": 5.0,
"delta": 3.0,
"percent_delta": 1.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 3.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 3.0,
"delta": -2.0,
"percent_delta": -0.4,
"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": 5.0,
"after": 3.0,
"delta": -2.0,
"percent_delta": -0.4,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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.6667,
"after": 6.0,
"delta": 0.3333,
"percent_delta": 0.0588,
"direction": "boost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 2,
"deboosted_metrics": 0,
"better_metrics": 2,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ARI",
"games": 129,
"wins": 68,
"losses": 61,
"win_pct": 0.5271,
"runs_scored": 588.0,
"runs_allowed": 575.0,
"run_differential": 13.0,
"run_differential_per_game": 0.1008,
"avg_runs_scored": 4.5581,
"avg_runs_allowed": 4.4574,
"offense_index": 1.0204,
"defense_index": 1.0022,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.1,
"avg_runs_allowed": 4.3,
"run_differential": 8.0
},
"available": true,
"quality_score": 0.0354
},
"opponent": {
"team": "CIN",
"games": 129,
"wins": 61,
"losses": 68,
"win_pct": 0.4729,
"runs_scored": 523.0,
"runs_allowed": 621.0,
"run_differential": -98.0,
"run_differential_per_game": -0.7597,
"avg_runs_scored": 4.0543,
"avg_runs_allowed": 4.814,
"offense_index": 0.9076,
"defense_index": 0.9279,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 5.6,
"run_differential": -20.0
},
"available": true,
"quality_score": -0.1516
},
"edges": {
"quality_edge": 0.187,
"offense_edge": 0.0204,
"opponent_offense_edge": -0.0924,
"defense_strength": 0.0022,
"opponent_defense_weakness": 0.0721,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0112,
"run_prevention": 0.9756,
"strikeout": 1.013
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "647336",
"profile": {
"available": true,
"pitcher_id": "647336",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 347.0,
"k_percent": 23.5,
"bb_percent": 5.6,
"woba": 0.281,
"xwoba": 0.312,
"sweet_spot_percent": 37.2,
"barrel_batted_rate": 8.0,
"hard_hit_percent": 32.6,
"avg_best_speed": 76.7392,
"avg_hyper_speed": 93.3417,
"whiff_percent": 22.0,
"swing_percent": 49.9
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.1508,
"command_and_miss": 0.0886,
"regression_edge": -0.8857,
"xwoba_edge": -0.0286,
"barrel_edge": -0.2,
"hard_hit_edge": 0.7286,
"whiff_edge": -0.4857,
"bb_edge": 0.875,
"pitch_design_score": -0.1185
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "647336",
"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": 87.80455448471346,
"release_spin_rate": 2592.301093672011,
"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": 87.80455448471346,
"release_spin_rate": 2592.301093672011,
"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.8046,
"release_spin_rate": 2592.3011,
"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.1185,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.8462,
"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.0094,
"sample_weight": 1.0,
"run_prevention_factor": 0.9992,
"strikeout_factor": 0.988,
"walk_factor": 0.93,
"homer_factor": 0.9877,
"woba_minus_xwoba": -0.031,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "647336",
"espn_id": 34984,
"player_name": "Michael Soroka",
"team": "ARI",
"role": "pitcher",
"espn_rank": 46,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 46,
"gp_value": 17.0,
"gp_rank": 400,
"gs_value": 17.0,
"gs_rank": 106,
"qs_value": 7.0,
"qs_rank": 73,
"era_value": 2.9347,
"era_rank": null,
"w_value": 8.0,
"w_rank": 46,
"l_value": 3.0,
"l_rank": 214,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 92.0,
"ip_rank": 117,
"h_value": 81.0,
"h_rank": 126,
"er_value": 30.0,
"er_rank": 174,
"hr_value": 6.0,
"hr_rank": 245,
"bb_value": 21.0,
"bb_rank": 239,
"k_value": 88.0,
"k_rank": 105,
"k_per_9_value": 8.608696,
"k_per_9_rank": 24,
"whip_value": 1.1086,
"whip_rank": null,
"war_value": 2.45,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9992,
"adjusted": 1
},
"predicted_H": {
"original": 4.0,
"factor": 0.9992,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.93,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9877,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.988,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 27,
"Pitches": 103,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was +3."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -8 outs from the projected workload."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260822_CIN@ARI.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_CLE@COL | away | Tanner Bibee | Tanner Bibee | True | 6.0 | 6.0 | 0 | 2 | 2 | 0 | 5/5 | 1/1 | 8/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.011086474501108,
"WHIP": 1.1507760532150775,
"IP": 150.1,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 5.782,
"recent_avg_IP": 6.267,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1896,
"sample_weight": 1.0,
"run_prevention_factor": 1.0161,
"strikeout_factor": 0.9731,
"walk_factor": 0.958,
"homer_factor": 1.0382,
"regression_flag": "neutral",
"k_percent": 19.1,
"bb_percent": 7.0,
"woba": 0.304,
"xwoba": 0.32,
"barrel_percent": 8.3,
"hard_hit_percent": 39.3,
"whiff_percent": 23.8
},
"espn_rank": {
"rank": 80,
"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": "676440",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.1,
"ER": 16.0,
"R": 18.0,
"H": 28.0,
"BB": 8.0,
"SO": 25.0,
"HR": 5.0,
"BF": 131.0,
"Pitches": 497.0
},
"per_game": {
"IP": 6.1,
"ER": 3.2,
"R": 3.6,
"H": 5.6,
"BB": 1.6,
"SO": 5.0,
"HR": 1.0,
"BF": 26.2,
"Pitches": 99.4
},
"rates": {
"ERA": 4.5957,
"WHIP": 1.1489,
"ER_per_IP": 0.51064,
"H_per_IP": 0.89362,
"BB_per_IP": 0.25532,
"SO_per_IP": 0.79787,
"HR_per_IP": 0.15957
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.0,
"ER": 27.0,
"R": 30.0,
"H": 53.0,
"BB": 15.0,
"SO": 39.0,
"HR": 9.0,
"BF": 249.0,
"Pitches": 928.0
},
"per_game": {
"IP": 6.0,
"ER": 2.7,
"R": 3.0,
"H": 5.3,
"BB": 1.5,
"SO": 3.9,
"HR": 0.9,
"BF": 24.9,
"Pitches": 92.8
},
"rates": {
"ERA": 3.9836,
"WHIP": 1.1148,
"ER_per_IP": 0.44262,
"H_per_IP": 0.86885,
"BB_per_IP": 0.2459,
"SO_per_IP": 0.63934,
"HR_per_IP": 0.14754
}
},
"season": {
"games": 26,
"totals": {
"IP": 150.1,
"ER": 67.0,
"R": 71.0,
"H": 130.0,
"BB": 43.0,
"SO": 117.0,
"HR": 25.0,
"BF": 613.0,
"Pitches": 2343.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5769,
"R": 2.7308,
"H": 5.0,
"BB": 1.6538,
"SO": 4.5,
"HR": 0.9615,
"BF": 23.5769,
"Pitches": 90.1154
},
"rates": {
"ERA": 4.0111,
"WHIP": 1.1508,
"ER_per_IP": 0.44568,
"H_per_IP": 0.86475,
"BB_per_IP": 0.28603,
"SO_per_IP": 0.77827,
"HR_per_IP": 0.1663
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.904,
"predicted_H": 5.43,
"predicted_BB": 1.673,
"predicted_SO": 4.69,
"predicted_HR": 0.943,
"predicted_ERA": 4.3058,
"predicted_WHIP": 1.1703
}
},
"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.904,
"final": 2.526,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.43,
"final": 5.2502,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.673,
"final": 1.3916,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.69,
"final": 5.2378,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.943,
"final": 1.385,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.3058,
"final": 4.3058,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1703,
"final": 1.1703,
"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": 27,
"H": 53,
"BB": 15,
"SO": 39,
"HR": 9,
"ERA": 3.9836065573770494,
"WHIP": 1.1147540983606556,
"K9": 5.754098360655738,
"HR9": 1.3278688524590163,
"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-16T00:00:00"
},
"recent_form_boost": 0.9468128312272102,
"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": 1.0,
"predicted_SO": 6.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
}
}
],
"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": 5.0,
"predicted_HR": 2.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": {}
}
],
"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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": "CLE",
"games": 129,
"wins": 63,
"losses": 66,
"win_pct": 0.4884,
"runs_scored": 516.0,
"runs_allowed": 531.0,
"run_differential": -15.0,
"run_differential_per_game": -0.1163,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.1163,
"offense_index": 0.8954,
"defense_index": 1.0852,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 3.1,
"run_differential": 12.0
},
"available": true,
"quality_score": -0.0242
},
"opponent": {
"team": "COL",
"games": 128,
"wins": 50,
"losses": 78,
"win_pct": 0.3906,
"runs_scored": 612.0,
"runs_allowed": 742.0,
"run_differential": -130.0,
"run_differential_per_game": -1.0156,
"avg_runs_scored": 4.7812,
"avg_runs_allowed": 5.7969,
"offense_index": 1.0703,
"defense_index": 0.7706,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 6.4,
"run_differential": -20.0
},
"available": true,
"quality_score": -0.253
},
"edges": {
"quality_edge": 0.2288,
"offense_edge": -0.1046,
"opponent_offense_edge": 0.0703,
"defense_strength": 0.0852,
"opponent_defense_weakness": 0.2294,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0089,
"run_prevention": 0.9913,
"strikeout": 1.0012
},
"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": 555.0,
"k_percent": 19.1,
"bb_percent": 7.0,
"woba": 0.304,
"xwoba": 0.32,
"sweet_spot_percent": 33.9,
"barrel_batted_rate": 8.3,
"hard_hit_percent": 39.3,
"avg_best_speed": 79.0936,
"avg_hyper_speed": 93.9976,
"whiff_percent": 23.8,
"swing_percent": 46.9
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.1577,
"command_and_miss": -0.1743,
"regression_edge": -0.4571,
"xwoba_edge": -0.2571,
"barrel_edge": -0.2667,
"hard_hit_edge": -0.2286,
"whiff_edge": -0.2286,
"bb_edge": 0.525,
"pitch_design_score": -0.1278
},
"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.6372863328271,
"release_spin_rate": 2305.080718513442,
"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.6372863328271,
"release_spin_rate": 2305.080718513442,
"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.6373,
"release_spin_rate": 2305.0807,
"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.1278,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.9131,
"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.1896,
"sample_weight": 1.0,
"run_prevention_factor": 1.0161,
"strikeout_factor": 0.9731,
"walk_factor": 0.958,
"homer_factor": 1.0382,
"woba_minus_xwoba": -0.016,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "676440",
"espn_id": 4345278,
"player_name": "Tanner Bibee",
"team": "CLE",
"role": "pitcher",
"espn_rank": 80,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 80,
"gp_value": 26.0,
"gp_rank": 229,
"gs_value": 26.0,
"gs_rank": 6,
"qs_value": 15.0,
"qs_rank": 10,
"era_value": 4.011,
"era_rank": 40.0,
"w_value": 4.0,
"w_rank": 164,
"l_value": 13.0,
"l_rank": 1,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 150.1,
"ip_rank": 9,
"h_value": 130.0,
"h_rank": 22,
"er_value": 67.0,
"er_rank": 17,
"hr_value": 25.0,
"hr_rank": 9,
"bb_value": 43.0,
"bb_rank": 47,
"k_value": 117.0,
"k_rank": 54,
"k_per_9_value": 7.004435,
"k_per_9_rank": 162,
"whip_value": 1.1507,
"whip_rank": 23.0,
"war_value": 1.82,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0161,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0161,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.958,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0382,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9731,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 8,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 25,
"Pitches": 98,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260822_CLE@COL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_CLE@COL | home | Gabriel Hughes | Gabriel Hughes | True | 4.1 | 5.0 | 2 | 4 | 3 | -1 | 5/4 | 1/2 | 5/2 | Last 10 before this game (8 available){
"model_context": {
"embedded_season": {
"ERA": 6.690265486725664,
"WHIP": 1.3805309734513276,
"IP": 37.2,
"games_started": null,
"games_pitched": 8,
"role_avg_IP": 4.952,
"recent_avg_IP": 4.667,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1281,
"sample_weight": 0.568,
"run_prevention_factor": 0.9891,
"strikeout_factor": 0.9747,
"walk_factor": 0.9864,
"homer_factor": 0.9299,
"regression_flag": "positive_pitcher_regression",
"k_percent": 20.1,
"bb_percent": 7.9,
"woba": 0.328,
"xwoba": 0.287,
"barrel_percent": 4.3,
"hard_hit_percent": 28.4,
"whiff_percent": 19.7
},
"espn_rank": {
"rank": 602,
"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": "687312",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 8,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.1,
"ER": 23.0,
"R": 23.0,
"H": 28.0,
"BB": 8.0,
"SO": 19.0,
"HR": 3.0,
"BF": 108.0,
"Pitches": 410.0
},
"per_game": {
"IP": 4.2,
"ER": 4.6,
"R": 4.6,
"H": 5.6,
"BB": 1.6,
"SO": 3.8,
"HR": 0.6,
"BF": 21.6,
"Pitches": 82.0
},
"rates": {
"ERA": 8.8714,
"WHIP": 1.5429,
"ER_per_IP": 0.98571,
"H_per_IP": 1.2,
"BB_per_IP": 0.34286,
"SO_per_IP": 0.81429,
"HR_per_IP": 0.12857
}
},
"last_10": {
"games": 8,
"totals": {
"IP": 37.2,
"ER": 28.0,
"R": 28.0,
"H": 39.0,
"BB": 13.0,
"SO": 33.0,
"HR": 3.0,
"BF": 164.0,
"Pitches": 639.0
},
"per_game": {
"IP": 4.2,
"ER": 3.5,
"R": 3.5,
"H": 4.875,
"BB": 1.625,
"SO": 4.125,
"HR": 0.375,
"BF": 20.5,
"Pitches": 79.875
},
"rates": {
"ERA": 6.6903,
"WHIP": 1.3805,
"ER_per_IP": 0.74336,
"H_per_IP": 1.0354,
"BB_per_IP": 0.34513,
"SO_per_IP": 0.87611,
"HR_per_IP": 0.07965
}
},
"season": {
"games": 8,
"totals": {
"IP": 37.2,
"ER": 28.0,
"R": 28.0,
"H": 39.0,
"BB": 13.0,
"SO": 33.0,
"HR": 3.0,
"BF": 164.0,
"Pitches": 639.0
},
"per_game": {
"IP": 4.2,
"ER": 3.5,
"R": 3.5,
"H": 4.875,
"BB": 1.625,
"SO": 4.125,
"HR": 0.375,
"BF": 20.5,
"Pitches": 79.875
},
"rates": {
"ERA": 6.6903,
"WHIP": 1.3805,
"ER_per_IP": 0.74336,
"H_per_IP": 1.0354,
"BB_per_IP": 0.34513,
"SO_per_IP": 0.87611,
"HR_per_IP": 0.07965
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 3.511,
"predicted_H": 5.046,
"predicted_BB": 1.644,
"predicted_SO": 4.102,
"predicted_HR": 0.59,
"predicted_ERA": 6.7709,
"predicted_WHIP": 1.4336
}
},
"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": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 3.511,
"final": 3.7616,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.046,
"final": 4.5099,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.644,
"final": 1.314,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.102,
"final": 4.5622,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.59,
"final": 0.8001,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.7709,
"final": 6.7709,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4336,
"final": 1.4336,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 37.2,
"ER": 28,
"H": 39,
"BB": 13,
"SO": 33,
"HR": 3,
"ERA": 6.690265486725664,
"WHIP": 1.3805309734513276,
"K9": 7.88495575221239,
"HR9": 0.7168141592920354,
"games_pitched": 8,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 8,
"error_prone": false
},
"games_count": 8,
"latest_game_date": "2026-08-16T00:00:00"
},
"recent_form_boost": 1.2579563826561961,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_BB": 1.0,
"predicted_SO": 5.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_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 4,
"predicted_H": 4,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 4,
"predicted_H": 5,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "687312",
"player_name": "Gabriel Hughes",
"position": "Starter",
"team": "COL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 4.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.1,
"after": 4.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": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_H",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_R": 4.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 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": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"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": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_H",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "COL",
"games": 128,
"wins": 50,
"losses": 78,
"win_pct": 0.3906,
"runs_scored": 612.0,
"runs_allowed": 742.0,
"run_differential": -130.0,
"run_differential_per_game": -1.0156,
"avg_runs_scored": 4.7812,
"avg_runs_allowed": 5.7969,
"offense_index": 1.0703,
"defense_index": 0.7706,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 6.4,
"run_differential": -20.0
},
"available": true,
"quality_score": -0.253
},
"opponent": {
"team": "CLE",
"games": 129,
"wins": 63,
"losses": 66,
"win_pct": 0.4884,
"runs_scored": 516.0,
"runs_allowed": 531.0,
"run_differential": -15.0,
"run_differential_per_game": -0.1163,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.1163,
"offense_index": 0.8954,
"defense_index": 1.0852,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 3.1,
"run_differential": 12.0
},
"available": true,
"quality_score": -0.0242
},
"edges": {
"quality_edge": -0.2288,
"offense_edge": 0.0703,
"opponent_offense_edge": -0.1046,
"defense_strength": -0.2294,
"opponent_defense_weakness": -0.0852,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9881,
"run_prevention": 1.0176,
"strikeout": 1.0015
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "687312",
"profile": {
"available": true,
"pitcher_id": "687312",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 142.0,
"k_percent": 20.1,
"bb_percent": 7.9,
"woba": 0.328,
"xwoba": 0.287,
"sweet_spot_percent": 35.3,
"barrel_batted_rate": 4.3,
"hard_hit_percent": 28.4,
"avg_best_speed": 79.0144,
"avg_hyper_speed": 92.5379,
"whiff_percent": 19.7,
"swing_percent": 48.4
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.3658,
"command_and_miss": -0.36,
"regression_edge": 1.1714,
"xwoba_edge": 0.6857,
"barrel_edge": 0.6222,
"hard_hit_edge": 1.3286,
"whiff_edge": -0.8143,
"bb_edge": 0.3,
"pitch_design_score": -0.037
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687312",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 82,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 82,
"pitch_usage": 0.0,
"release_speed": 89.25935377448579,
"release_spin_rate": 2175.6094685836038,
"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": 82,
"pitch_usage": 0.0,
"release_speed": 89.25935377448579,
"release_spin_rate": 2175.6094685836038,
"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.2594,
"release_spin_rate": 2175.6095,
"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.037,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2643,
"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.1281,
"sample_weight": 0.568,
"run_prevention_factor": 0.9891,
"strikeout_factor": 0.9747,
"walk_factor": 0.9864,
"homer_factor": 0.9299,
"woba_minus_xwoba": 0.041,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": true,
"player_id": "687312",
"espn_id": 4634930,
"player_name": "Gabriel Hughes",
"team": "COL",
"role": "pitcher",
"espn_rank": 602,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 602,
"gp_value": 8.0,
"gp_rank": 528,
"gs_value": 7.0,
"gs_rank": 187,
"qs_value": 1.0,
"qs_rank": 172,
"era_value": 6.6902,
"era_rank": null,
"w_value": 0.0,
"w_rank": 498,
"l_value": 4.0,
"l_rank": 153,
"sv_value": 1.0,
"sv_rank": 123,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 37.2,
"ip_rank": 352,
"h_value": 39.0,
"h_rank": 296,
"er_value": 28.0,
"er_rank": 186,
"hr_value": 3.0,
"hr_rank": 404,
"bb_value": 13.0,
"bb_rank": 383,
"k_value": 33.0,
"k_rank": 365,
"k_per_9_value": 7.8849564,
"k_per_9_rank": 27,
"whip_value": 1.3805,
"whip_rank": null,
"war_value": -0.14,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 0.9938,
"adjusted": 4
},
"predicted_H": {
"original": 5.0,
"factor": 0.9938,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9923,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9602,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9856,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 5,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 19,
"Pitches": 83,
"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": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260822_CLE@COL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_DET@KC | away | Drew Anderson | Drew Anderson | True | 4.1 | 5.0 | 2 | 1 | 3 | 2 | 1/5 | 0/1 | 4/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.008733624454149,
"WHIP": 1.296943231441048,
"IP": 76.1,
"games_started": null,
"games_pitched": 43,
"role_avg_IP": 4.0,
"recent_avg_IP": 4.0,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2596,
"sample_weight": 1.0,
"run_prevention_factor": 0.9779,
"strikeout_factor": 1.0417,
"walk_factor": 1.0,
"homer_factor": 1.005,
"regression_flag": "neutral",
"k_percent": 26.5,
"bb_percent": 9.1,
"woba": 0.318,
"xwoba": 0.292,
"barrel_percent": 8.3,
"hard_hit_percent": 37.7,
"whiff_percent": 28.4
},
"espn_rank": {
"rank": 215,
"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.311,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7538,
"prior_weight": 0.2462
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "623454",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 43,
"reference_playing_time": 4.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 15.1,
"ER": 6.0,
"R": 6.0,
"H": 13.0,
"BB": 6.0,
"SO": 13.0,
"HR": 2.0,
"BF": 63.0,
"Pitches": 238.0
},
"per_game": {
"IP": 3.0,
"ER": 1.2,
"R": 1.2,
"H": 2.6,
"BB": 1.2,
"SO": 2.6,
"HR": 0.4,
"BF": 12.6,
"Pitches": 47.6
},
"rates": {
"ERA": 3.5217,
"WHIP": 1.2391,
"ER_per_IP": 0.3913,
"H_per_IP": 0.84783,
"BB_per_IP": 0.3913,
"SO_per_IP": 0.84783,
"HR_per_IP": 0.13043
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 21.2,
"ER": 8.0,
"R": 8.0,
"H": 18.0,
"BB": 9.0,
"SO": 19.0,
"HR": 2.0,
"BF": 89.0,
"Pitches": 345.0
},
"per_game": {
"IP": 2.0,
"ER": 0.8,
"R": 0.8,
"H": 1.8,
"BB": 0.9,
"SO": 1.9,
"HR": 0.2,
"BF": 8.9,
"Pitches": 34.5
},
"rates": {
"ERA": 3.3231,
"WHIP": 1.2462,
"ER_per_IP": 0.36923,
"H_per_IP": 0.83077,
"BB_per_IP": 0.41538,
"SO_per_IP": 0.87692,
"HR_per_IP": 0.09231
}
},
"season": {
"games": 43,
"totals": {
"IP": 76.1,
"ER": 34.0,
"R": 37.0,
"H": 70.0,
"BB": 29.0,
"SO": 87.0,
"HR": 11.0,
"BF": 327.0,
"Pitches": 1271.0
},
"per_game": {
"IP": 1.2,
"ER": 0.7907,
"R": 0.8605,
"H": 1.6279,
"BB": 0.6744,
"SO": 2.0233,
"HR": 0.2558,
"BF": 7.6047,
"Pitches": 29.5581
},
"rates": {
"ERA": 4.0087,
"WHIP": 1.2969,
"ER_per_IP": 0.44541,
"H_per_IP": 0.91703,
"BB_per_IP": 0.37991,
"SO_per_IP": 1.13974,
"HR_per_IP": 0.1441
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.0,
"predicted_ER": 1.205,
"predicted_H": 2.534,
"predicted_BB": 1.116,
"predicted_SO": 2.648,
"predicted_HR": 0.363,
"predicted_ERA": 3.7886,
"predicted_WHIP": 1.2749
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.454,
"form_weight": 0.546,
"form_reliability": 0.7538,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.311,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7538,
"prior_weight": 0.2462
},
"applied_metrics": {
"predicted_IP": {
"model": 4.1,
"form": 3.0,
"final": 3.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.205,
"final": 1.1119,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 2.534,
"final": 1.8375,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.116,
"final": 0.6093,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 2.648,
"final": 3.2618,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.363,
"final": 0.6522,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.7886,
"final": 3.7886,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2749,
"final": 1.2749,
"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": 21.2,
"ER": 8,
"H": 18,
"BB": 9,
"SO": 19,
"HR": 2,
"ERA": 3.3230769230769233,
"WHIP": 1.2461538461538464,
"K9": 7.892307692307694,
"HR9": 0.8307692307692308,
"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-16T00:00:00"
},
"recent_form_boost": 0.9121694727664557,
"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": 1.0,
"predicted_BB": 0.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.311,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7538,
"prior_weight": 0.2462
}
}
],
"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": 0.0,
"predicted_ER": 1.0,
"predicted_H": 1.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": 1.0,
"predicted_H": 1.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_R": 1.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": 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": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "DET",
"games": 128,
"wins": 61,
"losses": 67,
"win_pct": 0.4766,
"runs_scored": 579.0,
"runs_allowed": 500.0,
"run_differential": 79.0,
"run_differential_per_game": 0.6172,
"avg_runs_scored": 4.5234,
"avg_runs_allowed": 3.9062,
"offense_index": 1.0128,
"defense_index": 1.1434,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.8,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.0139
},
"opponent": {
"team": "KC",
"games": 130,
"wins": 56,
"losses": 74,
"win_pct": 0.4308,
"runs_scored": 546.0,
"runs_allowed": 643.0,
"run_differential": -97.0,
"run_differential_per_game": -0.7462,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 4.9462,
"offense_index": 0.9404,
"defense_index": 0.903,
"current_streak": "W6",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 3.5,
"run_differential": 14.0
},
"available": true,
"quality_score": -0.0807
},
"edges": {
"quality_edge": 0.0668,
"offense_edge": 0.0128,
"opponent_offense_edge": -0.0596,
"defense_strength": 0.1434,
"opponent_defense_weakness": 0.097,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 1.0094,
"run_prevention": 0.9728,
"strikeout": 1.0068
},
"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": 284.0,
"k_percent": 26.5,
"bb_percent": 9.1,
"woba": 0.318,
"xwoba": 0.292,
"sweet_spot_percent": 30.4,
"barrel_batted_rate": 8.3,
"hard_hit_percent": 37.7,
"avg_best_speed": 80.4439,
"avg_hyper_speed": 94.0262,
"whiff_percent": 28.4,
"swing_percent": 48.2
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.1298,
"command_and_miss": 0.4264,
"regression_edge": 0.7429,
"xwoba_edge": 0.5429,
"barrel_edge": -0.2667,
"hard_hit_edge": 0.0,
"whiff_edge": 0.4286,
"bb_edge": 0.0,
"pitch_design_score": 0.022
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "623454",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 37,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 37,
"pitch_usage": 0.0,
"release_speed": 90.31300835952231,
"release_spin_rate": 2143.3167063093374,
"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": 37,
"pitch_usage": 0.0,
"release_speed": 90.31300835952231,
"release_spin_rate": 2143.3167063093374,
"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.313,
"release_spin_rate": 2143.3167,
"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.022,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.1572,
"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.2596,
"sample_weight": 1.0,
"run_prevention_factor": 0.9779,
"strikeout_factor": 1.0417,
"walk_factor": 1.0,
"homer_factor": 1.005,
"woba_minus_xwoba": 0.026,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "623454",
"espn_id": 28617,
"player_name": "Drew Anderson",
"team": "MIL",
"role": "pitcher",
"espn_rank": 215,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 215,
"gp_value": 43.0,
"gp_rank": 115,
"gs_value": 5.0,
"gs_rank": 204,
"qs_value": 0.0,
"qs_rank": 203,
"era_value": 4.0087,
"era_rank": null,
"w_value": 4.0,
"w_rank": 164,
"l_value": 4.0,
"l_rank": 153,
"sv_value": 2.0,
"sv_rank": 82,
"hld_value": 6.0,
"hld_rank": 134,
"ip_value": 76.1,
"ip_rank": 148,
"h_value": 70.0,
"h_rank": 150,
"er_value": 34.0,
"er_rank": 151,
"hr_value": 11.0,
"hr_rank": 130,
"bb_value": 29.0,
"bb_rank": 145,
"k_value": 87.0,
"k_rank": 108,
"k_per_9_value": 10.257642,
"k_per_9_rank": 19,
"whip_value": 1.2969,
"whip_rank": null,
"war_value": 0.65,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9779,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 0.9779,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.005,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0417,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 1,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 14,
"Pitches": 60,
"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."
}
],
"provenance": {
"prediction": "output/games/20260822_DET@KC.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_DET@KC | home | Michael Wacha | Michael Wacha | True | 6.0 | 7.0 | 3 | 2 | 1 | -1 | 5/3 | 1/1 | 4/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.584582441113491,
"WHIP": 1.1498929336188437,
"IP": 155.2,
"games_started": null,
"games_pitched": 25,
"role_avg_IP": 6.227,
"recent_avg_IP": 6.067,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1145,
"sample_weight": 1.0,
"run_prevention_factor": 1.0097,
"strikeout_factor": 0.9571,
"walk_factor": 0.948,
"homer_factor": 0.9991,
"regression_flag": "neutral",
"k_percent": 19.0,
"bb_percent": 6.5,
"woba": 0.309,
"xwoba": 0.314,
"barrel_percent": 7.1,
"hard_hit_percent": 37.1,
"whiff_percent": 21.1
},
"espn_rank": {
"rank": 36,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "608379",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 25,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.1,
"ER": 11.0,
"R": 13.0,
"H": 27.0,
"BB": 5.0,
"SO": 19.0,
"HR": 6.0,
"BF": 122.0,
"Pitches": 464.0
},
"per_game": {
"IP": 6.0,
"ER": 2.2,
"R": 2.6,
"H": 5.4,
"BB": 1.0,
"SO": 3.8,
"HR": 1.2,
"BF": 24.4,
"Pitches": 92.8
},
"rates": {
"ERA": 3.2637,
"WHIP": 1.0549,
"ER_per_IP": 0.36264,
"H_per_IP": 0.89011,
"BB_per_IP": 0.16484,
"SO_per_IP": 0.62637,
"HR_per_IP": 0.1978
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.2,
"ER": 24.0,
"R": 26.0,
"H": 56.0,
"BB": 13.0,
"SO": 48.0,
"HR": 11.0,
"BF": 250.0,
"Pitches": 973.0
},
"per_game": {
"IP": 6.0,
"ER": 2.4,
"R": 2.6,
"H": 5.6,
"BB": 1.3,
"SO": 4.8,
"HR": 1.1,
"BF": 25.0,
"Pitches": 97.3
},
"rates": {
"ERA": 3.5027,
"WHIP": 1.1189,
"ER_per_IP": 0.38919,
"H_per_IP": 0.90811,
"BB_per_IP": 0.21081,
"SO_per_IP": 0.77838,
"HR_per_IP": 0.17838
}
},
"season": {
"games": 25,
"totals": {
"IP": 155.2,
"ER": 62.0,
"R": 66.0,
"H": 138.0,
"BB": 41.0,
"SO": 120.0,
"HR": 21.0,
"BF": 632.0,
"Pitches": 2338.0
},
"per_game": {
"IP": 6.1,
"ER": 2.48,
"R": 2.64,
"H": 5.52,
"BB": 1.64,
"SO": 4.8,
"HR": 0.84,
"BF": 25.28,
"Pitches": 93.52
},
"rates": {
"ERA": 3.5846,
"WHIP": 1.1499,
"ER_per_IP": 0.39829,
"H_per_IP": 0.88651,
"BB_per_IP": 0.26338,
"SO_per_IP": 0.77088,
"HR_per_IP": 0.1349
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.42,
"predicted_H": 5.504,
"predicted_BB": 1.382,
"predicted_SO": 4.535,
"predicted_HR": 1.05,
"predicted_ERA": 3.5964,
"predicted_WHIP": 1.1372
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4204,
"form_weight": 0.5796,
"form_reliability": 0.8333,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.42,
"final": 2.2434,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.504,
"final": 5.2921,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.382,
"final": 1.2214,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.535,
"final": 4.3101,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.05,
"final": 1.029,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.5964,
"final": 3.5964,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1372,
"final": 1.1372,
"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": 56,
"BB": 13,
"SO": 48,
"HR": 11,
"ERA": 3.502702702702703,
"WHIP": 1.118918918918919,
"K9": 7.005405405405406,
"HR9": 1.6054054054054054,
"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-17T00:00:00"
},
"recent_form_boost": 0.8928152680903028,
"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": 1.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 5.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 2.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": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": "KC",
"games": 130,
"wins": 56,
"losses": 74,
"win_pct": 0.4308,
"runs_scored": 546.0,
"runs_allowed": 643.0,
"run_differential": -97.0,
"run_differential_per_game": -0.7462,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 4.9462,
"offense_index": 0.9404,
"defense_index": 0.903,
"current_streak": "W6",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 3.5,
"run_differential": 14.0
},
"available": true,
"quality_score": -0.0807
},
"opponent": {
"team": "DET",
"games": 128,
"wins": 61,
"losses": 67,
"win_pct": 0.4766,
"runs_scored": 579.0,
"runs_allowed": 500.0,
"run_differential": 79.0,
"run_differential_per_game": 0.6172,
"avg_runs_scored": 4.5234,
"avg_runs_allowed": 3.9062,
"offense_index": 1.0128,
"defense_index": 1.1434,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.8,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.0139
},
"edges": {
"quality_edge": -0.0668,
"offense_edge": -0.0596,
"opponent_offense_edge": 0.0128,
"defense_strength": -0.097,
"opponent_defense_weakness": -0.1434,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 0.9939,
"run_prevention": 1.0151,
"strikeout": 0.997
},
"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": 584.0,
"k_percent": 19.0,
"bb_percent": 6.5,
"woba": 0.309,
"xwoba": 0.314,
"sweet_spot_percent": 33.9,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.1,
"avg_best_speed": 78.1776,
"avg_hyper_speed": 93.6861,
"whiff_percent": 21.1,
"swing_percent": 48.5
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.0209,
"command_and_miss": -0.2907,
"regression_edge": -0.1429,
"xwoba_edge": -0.0857,
"barrel_edge": 0.0,
"hard_hit_edge": 0.0857,
"whiff_edge": -0.6143,
"bb_edge": 0.65,
"pitch_design_score": -0.1615
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "608379",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 96,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 96,
"pitch_usage": 0.0,
"release_speed": 87.03665415181123,
"release_spin_rate": 1985.1515583535293,
"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.03665415181123,
"release_spin_rate": 1985.1515583535293,
"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.0367,
"release_spin_rate": 1985.1516,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1615,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.1534,
"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.1145,
"sample_weight": 1.0,
"run_prevention_factor": 1.0097,
"strikeout_factor": 0.9571,
"walk_factor": 0.948,
"homer_factor": 0.9991,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "608379",
"espn_id": 32640,
"player_name": "Michael Wacha",
"team": "KC",
"role": "pitcher",
"espn_rank": 36,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 36,
"gp_value": 25.0,
"gp_rank": 253,
"gs_value": 25.0,
"gs_rank": 19,
"qs_value": 16.0,
"qs_rank": 4,
"era_value": 3.5845,
"era_rank": 28.0,
"w_value": 6.0,
"w_rank": 90,
"l_value": 8.0,
"l_rank": 34,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 155.2,
"ip_rank": 5,
"h_value": 138.0,
"h_rank": 15,
"er_value": 62.0,
"er_rank": 33,
"hr_value": 21.0,
"hr_rank": 19,
"bb_value": 41.0,
"bb_rank": 61,
"k_value": 120.0,
"k_rank": 50,
"k_per_9_value": 6.937901,
"k_per_9_rank": 270,
"whip_value": 1.1498,
"whip_rank": 22.0,
"war_value": 2.71,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0097,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0097,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.948,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9991,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9571,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"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 -1."
}
],
"provenance": {
"prediction": "output/games/20260822_DET@KC.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_LAA@TEX | away | Ryan Johnson | Ryan Johnson | True | 4.1 | 7.0 | 8 | 3 | 0 | -3 | 6/1 | 1/2 | 3/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 6.414364640883978,
"WHIP": 1.5414364640883977,
"IP": 60.1,
"games_started": null,
"games_pitched": 15,
"role_avg_IP": 4.611,
"recent_avg_IP": 4.4,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.6247,
"sample_weight": 0.996,
"run_prevention_factor": 1.0531,
"strikeout_factor": 0.9596,
"walk_factor": 1.0319,
"homer_factor": 1.1177,
"regression_flag": "neutral",
"k_percent": 17.3,
"bb_percent": 10.7,
"woba": 0.37,
"xwoba": 0.359,
"barrel_percent": 11.5,
"hard_hit_percent": 37.5,
"whiff_percent": 23.2
},
"espn_rank": {
"rank": 804,
"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": "696270",
"report_date": "20260822",
"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": 17.0,
"HR": 6.0,
"BF": 102.0,
"Pitches": 404.0
},
"per_game": {
"IP": 4.1,
"ER": 3.4,
"R": 3.4,
"H": 5.0,
"BB": 2.6,
"SO": 3.4,
"HR": 1.2,
"BF": 20.4,
"Pitches": 80.8
},
"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": 0.77273,
"HR_per_IP": 0.27273
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.0,
"ER": 24.0,
"R": 29.0,
"H": 41.0,
"BB": 21.0,
"SO": 40.0,
"HR": 11.0,
"BF": 199.0,
"Pitches": 828.0
},
"per_game": {
"IP": 4.2,
"ER": 2.4,
"R": 2.9,
"H": 4.1,
"BB": 2.1,
"SO": 4.0,
"HR": 1.1,
"BF": 19.9,
"Pitches": 82.8
},
"rates": {
"ERA": 4.5957,
"WHIP": 1.3191,
"ER_per_IP": 0.51064,
"H_per_IP": 0.87234,
"BB_per_IP": 0.44681,
"SO_per_IP": 0.85106,
"HR_per_IP": 0.23404
}
},
"season": {
"games": 15,
"totals": {
"IP": 60.1,
"ER": 43.0,
"R": 48.0,
"H": 64.0,
"BB": 29.0,
"SO": 47.0,
"HR": 16.0,
"BF": 271.0,
"Pitches": 1087.0
},
"per_game": {
"IP": 4.0,
"ER": 2.8667,
"R": 3.2,
"H": 4.2667,
"BB": 1.9333,
"SO": 3.1333,
"HR": 1.0667,
"BF": 18.0667,
"Pitches": 72.4667
},
"rates": {
"ERA": 6.4144,
"WHIP": 1.5414,
"ER_per_IP": 0.71271,
"H_per_IP": 1.06077,
"BB_per_IP": 0.48066,
"SO_per_IP": 0.77901,
"HR_per_IP": 0.26519
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.742,
"predicted_H": 4.438,
"predicted_BB": 2.1,
"predicted_SO": 3.666,
"predicted_HR": 1.007,
"predicted_ERA": 5.6458,
"predicted_WHIP": 1.4958
}
},
"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.742,
"final": 2.4039,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.438,
"final": 5.1497,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.1,
"final": 1.5988,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 3.666,
"final": 3.3626,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.007,
"final": 1.0038,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.6458,
"final": 5.6458,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4958,
"final": 1.4958,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 47.0,
"ER": 24,
"H": 41,
"BB": 21,
"SO": 40,
"HR": 11,
"ERA": 4.595744680851064,
"WHIP": 1.3191489361702127,
"K9": 7.659574468085107,
"HR9": 2.106382978723404,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-16T00:00:00"
},
"recent_form_boost": 1.0207882410632758,
"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": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 3.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
}
},
{
"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": 6,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 1
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 3,
"predicted_H": 6,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "696270",
"player_name": "Ryan Johnson",
"position": "Starter",
"team": "LAA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"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": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"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": 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": 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": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_R": 3.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"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": 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": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"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": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"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": "LAA",
"games": 129,
"wins": 51,
"losses": 78,
"win_pct": 0.3953,
"runs_scored": 531.0,
"runs_allowed": 602.0,
"run_differential": -71.0,
"run_differential_per_game": -0.5504,
"avg_runs_scored": 4.1163,
"avg_runs_allowed": 4.6667,
"offense_index": 0.9216,
"defense_index": 0.9571,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 2.3,
"run_differential": 23.0
},
"available": true,
"quality_score": -0.1218
},
"opponent": {
"team": "TEX",
"games": 129,
"wins": 64,
"losses": 65,
"win_pct": 0.4961,
"runs_scored": 516.0,
"runs_allowed": 561.0,
"run_differential": -45.0,
"run_differential_per_game": -0.3488,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.3488,
"offense_index": 0.8956,
"defense_index": 1.027,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.3,
"avg_runs_allowed": 3.8,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.0813
},
"edges": {
"quality_edge": -0.0405,
"offense_edge": -0.0784,
"opponent_offense_edge": -0.1044,
"defense_strength": -0.0429,
"opponent_defense_weakness": -0.027,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0013,
"run_prevention": 0.9896,
"strikeout": 1.0071
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "696270",
"profile": {
"available": true,
"pitcher_id": "696270",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 249.0,
"k_percent": 17.3,
"bb_percent": 10.7,
"woba": 0.37,
"xwoba": 0.359,
"sweet_spot_percent": 32.8,
"barrel_batted_rate": 11.5,
"hard_hit_percent": 37.5,
"avg_best_speed": 76.804,
"avg_hyper_speed": 93.9618,
"whiff_percent": 23.2,
"swing_percent": 46.0
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.9191,
"command_and_miss": -0.505,
"regression_edge": 0.3143,
"xwoba_edge": -1.3714,
"barrel_edge": -0.9778,
"hard_hit_edge": 0.0286,
"whiff_edge": -0.3143,
"bb_edge": -0.4,
"pitch_design_score": -0.1581
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "696270",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 82,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 82,
"pitch_usage": 0.0,
"release_speed": 87.09651588030943,
"release_spin_rate": 2258.6257183078797,
"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": 82,
"pitch_usage": 0.0,
"release_speed": 87.09651588030943,
"release_spin_rate": 2258.6257183078797,
"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.0965,
"release_spin_rate": 2258.6257,
"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.1581,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.1294,
"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.6247,
"sample_weight": 0.996,
"run_prevention_factor": 1.0531,
"strikeout_factor": 0.9596,
"walk_factor": 1.0319,
"homer_factor": 1.1177,
"woba_minus_xwoba": 0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "696270",
"espn_id": 5007859,
"player_name": "Ryan Johnson",
"team": "LAA",
"role": "pitcher",
"espn_rank": 804,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 804,
"gp_value": 15.0,
"gp_rank": 428,
"gs_value": 12.0,
"gs_rank": 145,
"qs_value": 1.0,
"qs_rank": 172,
"era_value": 6.4143,
"era_rank": null,
"w_value": 2.0,
"w_rank": 287,
"l_value": 7.0,
"l_rank": 64,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 60.1,
"ip_rank": 191,
"h_value": 64.0,
"h_rank": 160,
"er_value": 43.0,
"er_rank": 118,
"hr_value": 16.0,
"hr_rank": 60,
"bb_value": 29.0,
"bb_rank": 145,
"k_value": 47.0,
"k_rank": 277,
"k_per_9_value": 7.0110497,
"k_per_9_rank": 39,
"whip_value": 1.5414,
"whip_rank": null,
"war_value": -0.99,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0529,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0529,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0318,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1172,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9598,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 20,
"Pitches": 83,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +8 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 5",
"detail": "Actual minus predicted hits was -5."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260822_LAA@TEX.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_LAA@TEX | home | Cody Bradford | Cody Bradford | True | 5.1 | 5.1 | 0 | 2 | 2 | 0 | 1/7 | 0/0 | 7/3 | Last 10 before this game (3 available){
"model_context": {
"embedded_season": {
"ERA": 2.934782608695652,
"WHIP": 1.434782608695652,
"IP": 15.1,
"games_started": null,
"games_pitched": 3,
"role_avg_IP": 5.111,
"recent_avg_IP": 5.111,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.356,
"sample_weight": 0.45,
"run_prevention_factor": 1.0303,
"strikeout_factor": 0.9727,
"walk_factor": 0.9739,
"homer_factor": 1.0582,
"regression_flag": "neutral",
"k_percent": 15.4,
"bb_percent": 6.2,
"woba": 0.341,
"xwoba": 0.369,
"barrel_percent": 10.2,
"hard_hit_percent": 42.0,
"whiff_percent": 21.6
},
"espn_rank": {
"rank": 249,
"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": "674003",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 3,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 3,
"totals": {
"IP": 15.1,
"ER": 5.0,
"R": 5.0,
"H": 18.0,
"BB": 4.0,
"SO": 10.0,
"HR": 1.0,
"BF": 65.0,
"Pitches": 226.0
},
"per_game": {
"IP": 5.0,
"ER": 1.6667,
"R": 1.6667,
"H": 6.0,
"BB": 1.3333,
"SO": 3.3333,
"HR": 0.3333,
"BF": 21.6667,
"Pitches": 75.3333
},
"rates": {
"ERA": 2.9348,
"WHIP": 1.4348,
"ER_per_IP": 0.32609,
"H_per_IP": 1.17391,
"BB_per_IP": 0.26087,
"SO_per_IP": 0.65217,
"HR_per_IP": 0.06522
}
},
"last_10": {
"games": 3,
"totals": {
"IP": 15.1,
"ER": 5.0,
"R": 5.0,
"H": 18.0,
"BB": 4.0,
"SO": 10.0,
"HR": 1.0,
"BF": 65.0,
"Pitches": 226.0
},
"per_game": {
"IP": 5.0,
"ER": 1.6667,
"R": 1.6667,
"H": 6.0,
"BB": 1.3333,
"SO": 3.3333,
"HR": 0.3333,
"BF": 21.6667,
"Pitches": 75.3333
},
"rates": {
"ERA": 2.9348,
"WHIP": 1.4348,
"ER_per_IP": 0.32609,
"H_per_IP": 1.17391,
"BB_per_IP": 0.26087,
"SO_per_IP": 0.65217,
"HR_per_IP": 0.06522
}
},
"season": {
"games": 3,
"totals": {
"IP": 15.1,
"ER": 5.0,
"R": 5.0,
"H": 18.0,
"BB": 4.0,
"SO": 10.0,
"HR": 1.0,
"BF": 65.0,
"Pitches": 226.0
},
"per_game": {
"IP": 5.0,
"ER": 1.6667,
"R": 1.6667,
"H": 6.0,
"BB": 1.3333,
"SO": 3.3333,
"HR": 0.3333,
"BF": 21.6667,
"Pitches": 75.3333
},
"rates": {
"ERA": 2.9348,
"WHIP": 1.4348,
"ER_per_IP": 0.32609,
"H_per_IP": 1.17391,
"BB_per_IP": 0.26087,
"SO_per_IP": 0.65217,
"HR_per_IP": 0.06522
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.181,
"predicted_H": 5.248,
"predicted_BB": 1.634,
"predicted_SO": 4.194,
"predicted_HR": 0.585,
"predicted_ERA": 3.9258,
"predicted_WHIP": 1.3764
}
},
"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.181,
"final": 2.0699,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 5.248,
"final": 2.6395,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.634,
"final": 0.6306,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.194,
"final": 5.9171,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.585,
"final": 0.2258,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.9258,
"final": 3.9258,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3764,
"final": 1.3764,
"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": 15.1,
"ER": 5,
"H": 18,
"BB": 4,
"SO": 10,
"HR": 1,
"ERA": 2.9347826086956523,
"WHIP": 1.4347826086956523,
"K9": 5.869565217391305,
"HR9": 0.5869565217391305,
"games_pitched": 3,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 3,
"error_prone": false
},
"games_count": 3,
"latest_game_date": "2026-08-16T00:00:00"
},
"recent_form_boost": 0.9183432820498811,
"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": 1.0,
"predicted_BB": 0.0,
"predicted_SO": 7.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
}
}
],
"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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.1,
"delta": 0.1,
"percent_delta": 0.02,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.1,
"delta": 0.1,
"percent_delta": 0.02,
"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": "TEX",
"games": 129,
"wins": 64,
"losses": 65,
"win_pct": 0.4961,
"runs_scored": 516.0,
"runs_allowed": 561.0,
"run_differential": -45.0,
"run_differential_per_game": -0.3488,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.3488,
"offense_index": 0.8956,
"defense_index": 1.027,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.3,
"avg_runs_allowed": 3.8,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.0813
},
"opponent": {
"team": "LAA",
"games": 129,
"wins": 51,
"losses": 78,
"win_pct": 0.3953,
"runs_scored": 531.0,
"runs_allowed": 602.0,
"run_differential": -71.0,
"run_differential_per_game": -0.5504,
"avg_runs_scored": 4.1163,
"avg_runs_allowed": 4.6667,
"offense_index": 0.9216,
"defense_index": 0.9571,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 2.3,
"run_differential": 23.0
},
"available": true,
"quality_score": -0.1218
},
"edges": {
"quality_edge": 0.0405,
"offense_edge": -0.1044,
"opponent_offense_edge": -0.0784,
"defense_strength": 0.027,
"opponent_defense_weakness": 0.0429,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 1.0056,
"run_prevention": 0.9827,
"strikeout": 1.0075
},
"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": 45.0,
"k_percent": 15.4,
"bb_percent": 6.2,
"woba": 0.341,
"xwoba": 0.369,
"sweet_spot_percent": 30.0,
"barrel_batted_rate": 10.2,
"hard_hit_percent": 42.0,
"avg_best_speed": 84.0241,
"avg_hyper_speed": 95.2644,
"whiff_percent": 21.6,
"swing_percent": 49.1
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -1.0059,
"command_and_miss": -0.4821,
"regression_edge": -0.8,
"xwoba_edge": -1.6571,
"barrel_edge": -0.6889,
"hard_hit_edge": -0.6143,
"whiff_edge": -0.5429,
"bb_edge": 0.725,
"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": 72,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 72,
"pitch_usage": 0.0,
"release_speed": 83.94495238095239,
"release_spin_rate": 1876.9509523809525,
"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": 72,
"pitch_usage": 0.0,
"release_speed": 83.94495238095239,
"release_spin_rate": 1876.9509523809525,
"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": 83.945,
"release_spin_rate": 1876.951,
"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.356,
"sample_weight": 0.45,
"run_prevention_factor": 1.0303,
"strikeout_factor": 0.9727,
"walk_factor": 0.9739,
"homer_factor": 1.0582,
"woba_minus_xwoba": -0.028,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "674003",
"espn_id": 4142539,
"player_name": "Cody Bradford",
"team": "TEX",
"role": "pitcher",
"espn_rank": 249,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 249,
"gp_value": 3.0,
"gp_rank": 663,
"gs_value": 3.0,
"gs_rank": 239,
"qs_value": 1.0,
"qs_rank": 172,
"era_value": 2.9347,
"era_rank": null,
"w_value": 0.0,
"w_rank": 498,
"l_value": 1.0,
"l_rank": 393,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 15.1,
"ip_rank": 528,
"h_value": 18.0,
"h_rank": 498,
"er_value": 5.0,
"er_rank": 612,
"hr_value": 1.0,
"hr_rank": 578,
"bb_value": 4.0,
"bb_rank": 612,
"k_value": 10.0,
"k_rank": 555,
"k_per_9_value": 5.869565,
"k_per_9_rank": 28,
"whip_value": 1.4347,
"whip_rank": null,
"war_value": 0.46,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0136,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 1.0136,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.9883,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0262,
"adjusted": 0
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9877,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 1,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 17,
"Pitches": 78,
"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 +0."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 6",
"detail": "Actual minus predicted hits was +6."
}
],
"provenance": {
"prediction": "output/games/20260822_LAA@TEX.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_MIN@SD | away | Dean Kremer | Dean Kremer | True | 5.0 | 5.1 | 1 | 2 | 2 | 0 | 4/3 | 3/3 | 4/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.3999999999999995,
"WHIP": 1.18125,
"IP": 53.1,
"games_started": null,
"games_pitched": 10,
"role_avg_IP": 5.333,
"recent_avg_IP": 5.467,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0671,
"sample_weight": 0.776,
"run_prevention_factor": 0.9943,
"strikeout_factor": 1.0231,
"walk_factor": 0.9736,
"homer_factor": 0.9895,
"regression_flag": "neutral",
"k_percent": 24.4,
"bb_percent": 7.4,
"woba": 0.335,
"xwoba": 0.315,
"barrel_percent": 7.4,
"hard_hit_percent": 33.8,
"whiff_percent": 28.4
},
"espn_rank": {
"rank": 450,
"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.5625,
"last_10": 0.43749999999999994
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 10.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6667,
"prior_weight": 0.3333
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "665152",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 10,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.1,
"ER": 20.0,
"R": 20.0,
"H": 25.0,
"BB": 9.0,
"SO": 24.0,
"HR": 4.0,
"BF": 114.0,
"Pitches": 434.0
},
"per_game": {
"IP": 5.1,
"ER": 4.0,
"R": 4.0,
"H": 5.0,
"BB": 1.8,
"SO": 4.8,
"HR": 0.8,
"BF": 22.8,
"Pitches": 86.8
},
"rates": {
"ERA": 6.5854,
"WHIP": 1.2439,
"ER_per_IP": 0.73171,
"H_per_IP": 0.91463,
"BB_per_IP": 0.32927,
"SO_per_IP": 0.87805,
"HR_per_IP": 0.14634
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.1,
"ER": 32.0,
"R": 34.0,
"H": 47.0,
"BB": 16.0,
"SO": 53.0,
"HR": 13.0,
"BF": 217.0,
"Pitches": 863.0
},
"per_game": {
"IP": 5.1,
"ER": 3.2,
"R": 3.4,
"H": 4.7,
"BB": 1.6,
"SO": 5.3,
"HR": 1.3,
"BF": 21.7,
"Pitches": 86.3
},
"rates": {
"ERA": 5.4,
"WHIP": 1.1812,
"ER_per_IP": 0.6,
"H_per_IP": 0.88125,
"BB_per_IP": 0.3,
"SO_per_IP": 0.99375,
"HR_per_IP": 0.24375
}
},
"season": {
"games": 10,
"totals": {
"IP": 53.1,
"ER": 32.0,
"R": 34.0,
"H": 47.0,
"BB": 16.0,
"SO": 53.0,
"HR": 13.0,
"BF": 217.0,
"Pitches": 863.0
},
"per_game": {
"IP": 5.1,
"ER": 3.2,
"R": 3.4,
"H": 4.7,
"BB": 1.6,
"SO": 5.3,
"HR": 1.3,
"BF": 21.7,
"Pitches": 86.3
},
"rates": {
"ERA": 5.4,
"WHIP": 1.1812,
"ER_per_IP": 0.6,
"H_per_IP": 0.88125,
"BB_per_IP": 0.3,
"SO_per_IP": 0.99375,
"HR_per_IP": 0.24375
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 3.29,
"predicted_H": 4.934,
"predicted_BB": 1.776,
"predicted_SO": 4.992,
"predicted_HR": 0.935,
"predicted_ERA": 5.5514,
"predicted_WHIP": 1.2581
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4908,
"form_weight": 0.5092,
"form_reliability": 0.6667,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 10.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6667,
"prior_weight": 0.3333
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 3.29,
"final": 2.6568,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.934,
"final": 4.4756,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.776,
"final": 2.3768,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.992,
"final": 4.5051,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.935,
"final": 0.4761,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.5514,
"final": 5.5514,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2581,
"final": 1.2581,
"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": 32,
"H": 47,
"BB": 16,
"SO": 53,
"HR": 13,
"ERA": 5.4,
"WHIP": 1.1812500000000001,
"K9": 8.943750000000001,
"HR9": 2.19375,
"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-16T00:00:00"
},
"recent_form_boost": 1.107819491063276,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 10.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6667,
"prior_weight": 0.3333
}
},
{
"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": 4,
"predicted_BB": 3,
"predicted_SO": 4,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "665152",
"player_name": "Dean Kremer",
"position": "Starter",
"team": "MIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": "MIN",
"games": 129,
"wins": 63,
"losses": 66,
"win_pct": 0.4884,
"runs_scored": 594.0,
"runs_allowed": 639.0,
"run_differential": -45.0,
"run_differential_per_game": -0.3488,
"avg_runs_scored": 4.6047,
"avg_runs_allowed": 4.9535,
"offense_index": 1.0296,
"defense_index": 0.9029,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 5.1,
"run_differential": -10.0
},
"available": true,
"quality_score": -0.0528
},
"opponent": {
"team": "SD",
"games": 129,
"wins": 69,
"losses": 60,
"win_pct": 0.5349,
"runs_scored": 549.0,
"runs_allowed": 542.0,
"run_differential": 7.0,
"run_differential_per_game": 0.0543,
"avg_runs_scored": 4.2558,
"avg_runs_allowed": 4.2016,
"offense_index": 0.9516,
"defense_index": 1.0645,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 2.8,
"run_differential": 17.0
},
"available": true,
"quality_score": 0.1063
},
"edges": {
"quality_edge": -0.1591,
"offense_edge": 0.0296,
"opponent_offense_edge": -0.0484,
"defense_strength": -0.0971,
"opponent_defense_weakness": -0.0645,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9927,
"run_prevention": 1.0099,
"strikeout": 0.9991
},
"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": 194.0,
"k_percent": 24.4,
"bb_percent": 7.4,
"woba": 0.335,
"xwoba": 0.315,
"sweet_spot_percent": 37.2,
"barrel_batted_rate": 7.4,
"hard_hit_percent": 33.8,
"avg_best_speed": 75.5778,
"avg_hyper_speed": 93.2114,
"whiff_percent": 28.4,
"swing_percent": 46.1
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.0958,
"command_and_miss": 0.3764,
"regression_edge": 0.5714,
"xwoba_edge": -0.1143,
"barrel_edge": -0.0667,
"hard_hit_edge": 0.5571,
"whiff_edge": 0.4286,
"bb_edge": 0.425,
"pitch_design_score": -0.1853
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "665152",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 85,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 85,
"pitch_usage": 0.0,
"release_speed": 86.6105820856605,
"release_spin_rate": 2069.9377263192855,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 85,
"pitch_usage": 0.0,
"release_speed": 86.6105820856605,
"release_spin_rate": 2069.9377263192855,
"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.6106,
"release_spin_rate": 2069.9377,
"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.1853,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.3238,
"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.0671,
"sample_weight": 0.776,
"run_prevention_factor": 0.9943,
"strikeout_factor": 1.0231,
"walk_factor": 0.9736,
"homer_factor": 0.9895,
"woba_minus_xwoba": 0.02,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "665152",
"espn_id": 38295,
"player_name": "Dean Kremer",
"team": "MIN",
"role": "pitcher",
"espn_rank": 450,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 450,
"gp_value": 10.0,
"gp_rank": 500,
"gs_value": 10.0,
"gs_rank": 164,
"qs_value": 3.0,
"qs_rank": 131,
"era_value": 5.4,
"era_rank": null,
"w_value": 2.0,
"w_rank": 287,
"l_value": 4.0,
"l_rank": 153,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 53.1,
"ip_rank": 234,
"h_value": 47.0,
"h_rank": 223,
"er_value": 32.0,
"er_rank": 162,
"hr_value": 13.0,
"hr_rank": 98,
"bb_value": 16.0,
"bb_rank": 330,
"k_value": 53.0,
"k_rank": 230,
"k_per_9_value": 8.94375,
"k_per_9_rank": 26,
"whip_value": 1.1812,
"whip_rank": null,
"war_value": 0.02,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 0.9956,
"adjusted": 4
},
"predicted_H": {
"original": 5.0,
"factor": 0.9956,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9795,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9919,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0179,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 99,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260822_MIN@SD.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_MIN@SD | home | Casey Mize | Casey Mize | True | 5.2 | 2.2 | -9 | 1 | 4 | 3 | 5/4 | 3/1 | 4/0 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.176470588235294,
"WHIP": 1.0686274509803921,
"IP": 102.0,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 5.368,
"recent_avg_IP": 4.933,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2763,
"sample_weight": 1.0,
"run_prevention_factor": 0.9765,
"strikeout_factor": 1.0057,
"walk_factor": 0.94,
"homer_factor": 0.9821,
"regression_flag": "neutral",
"k_percent": 23.3,
"bb_percent": 6.1,
"woba": 0.273,
"xwoba": 0.283,
"barrel_percent": 7.7,
"hard_hit_percent": 36.9,
"whiff_percent": 25.3
},
"espn_rank": {
"rank": 35,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 102.0,
"season_ERA": 3.176,
"season_WHIP": 1.069,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "663554",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.2,
"ER": 12.0,
"R": 12.0,
"H": 25.0,
"BB": 7.0,
"SO": 18.0,
"HR": 2.0,
"BF": 104.0,
"Pitches": 405.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4,
"R": 2.4,
"H": 5.0,
"BB": 1.4,
"SO": 3.6,
"HR": 0.4,
"BF": 20.8,
"Pitches": 81.0
},
"rates": {
"ERA": 4.3784,
"WHIP": 1.2973,
"ER_per_IP": 0.48649,
"H_per_IP": 1.01351,
"BB_per_IP": 0.28378,
"SO_per_IP": 0.72973,
"HR_per_IP": 0.08108
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.1,
"ER": 24.0,
"R": 25.0,
"H": 50.0,
"BB": 13.0,
"SO": 46.0,
"HR": 5.0,
"BF": 223.0,
"Pitches": 867.0
},
"per_game": {
"IP": 5.1,
"ER": 2.4,
"R": 2.5,
"H": 5.0,
"BB": 1.3,
"SO": 4.6,
"HR": 0.5,
"BF": 22.3,
"Pitches": 86.7
},
"rates": {
"ERA": 3.9755,
"WHIP": 1.1595,
"ER_per_IP": 0.44172,
"H_per_IP": 0.92025,
"BB_per_IP": 0.23926,
"SO_per_IP": 0.84663,
"HR_per_IP": 0.09202
}
},
"season": {
"games": 19,
"totals": {
"IP": 102.0,
"ER": 36.0,
"R": 37.0,
"H": 84.0,
"BB": 25.0,
"SO": 95.0,
"HR": 7.0,
"BF": 408.0,
"Pitches": 1564.0
},
"per_game": {
"IP": 5.1,
"ER": 1.8947,
"R": 1.9474,
"H": 4.4211,
"BB": 1.3158,
"SO": 5.0,
"HR": 0.3684,
"BF": 21.4737,
"Pitches": 82.3158
},
"rates": {
"ERA": 3.1765,
"WHIP": 1.0686,
"ER_per_IP": 0.35294,
"H_per_IP": 0.82353,
"BB_per_IP": 0.2451,
"SO_per_IP": 0.93137,
"HR_per_IP": 0.06863
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.411,
"predicted_H": 5.018,
"predicted_BB": 1.493,
"predicted_SO": 4.439,
"predicted_HR": 0.508,
"predicted_ERA": 4.106,
"predicted_WHIP": 1.2321
}
},
"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.2,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.411,
"final": 1.793,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.018,
"final": 5.0101,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.493,
"final": 2.1531,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.439,
"final": 3.3707,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.508,
"final": 0.2855,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.106,
"final": 4.106,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2321,
"final": 1.2321,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 54.1,
"ER": 24,
"H": 50,
"BB": 13,
"SO": 46,
"HR": 5,
"ERA": 3.9754601226993866,
"WHIP": 1.159509202453988,
"K9": 7.619631901840491,
"HR9": 0.8282208588957056,
"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-16T00:00:00"
},
"recent_form_boost": 0.9470152349283064,
"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": 5.0,
"predicted_BB": 3.0,
"predicted_SO": 2.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 1,
"predicted_H": 5,
"predicted_BB": 3,
"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": 3.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SD",
"games": 129,
"wins": 69,
"losses": 60,
"win_pct": 0.5349,
"runs_scored": 549.0,
"runs_allowed": 542.0,
"run_differential": 7.0,
"run_differential_per_game": 0.0543,
"avg_runs_scored": 4.2558,
"avg_runs_allowed": 4.2016,
"offense_index": 0.9516,
"defense_index": 1.0645,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 2.8,
"run_differential": 17.0
},
"available": true,
"quality_score": 0.1063
},
"opponent": {
"team": "MIN",
"games": 129,
"wins": 63,
"losses": 66,
"win_pct": 0.4884,
"runs_scored": 594.0,
"runs_allowed": 639.0,
"run_differential": -45.0,
"run_differential_per_game": -0.3488,
"avg_runs_scored": 4.6047,
"avg_runs_allowed": 4.9535,
"offense_index": 1.0296,
"defense_index": 0.9029,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 5.1,
"run_differential": -10.0
},
"available": true,
"quality_score": -0.0528
},
"edges": {
"quality_edge": 0.1591,
"offense_edge": -0.0484,
"opponent_offense_edge": 0.0296,
"defense_strength": 0.0645,
"opponent_defense_weakness": 0.0971,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0071,
"run_prevention": 0.9903,
"strikeout": 1.0024
},
"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": 385.0,
"k_percent": 23.3,
"bb_percent": 6.1,
"woba": 0.273,
"xwoba": 0.283,
"sweet_spot_percent": 35.9,
"barrel_batted_rate": 7.7,
"hard_hit_percent": 36.9,
"avg_best_speed": 78.6025,
"avg_hyper_speed": 93.7065,
"whiff_percent": 25.3,
"swing_percent": 48.2
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.4434,
"command_and_miss": 0.2157,
"regression_edge": -0.2857,
"xwoba_edge": 0.8,
"barrel_edge": -0.1333,
"hard_hit_edge": 0.1143,
"whiff_edge": -0.0143,
"bb_edge": 0.75,
"pitch_design_score": 0.0063
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663554",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 83,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 83,
"pitch_usage": 0.0,
"release_speed": 90.03228158969657,
"release_spin_rate": 2098.5726027069522,
"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": 83,
"pitch_usage": 0.0,
"release_speed": 90.03228158969657,
"release_spin_rate": 2098.5726027069522,
"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.0323,
"release_spin_rate": 2098.5726,
"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.0063,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0449,
"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.2763,
"sample_weight": 1.0,
"run_prevention_factor": 0.9765,
"strikeout_factor": 1.0057,
"walk_factor": 0.94,
"homer_factor": 0.9821,
"woba_minus_xwoba": -0.01,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "663554",
"espn_id": 41167,
"player_name": "Casey Mize",
"team": "SD",
"role": "pitcher",
"espn_rank": 35,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 35,
"gp_value": 19.0,
"gp_rank": 368,
"gs_value": 19.0,
"gs_rank": 92,
"qs_value": 10.0,
"qs_rank": 48,
"era_value": 3.1764,
"era_rank": null,
"w_value": 5.0,
"w_rank": 117,
"l_value": 7.0,
"l_rank": 64,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 102.0,
"ip_rank": 101,
"h_value": 84.0,
"h_rank": 118,
"er_value": 36.0,
"er_rank": 146,
"hr_value": 7.0,
"hr_rank": 207,
"bb_value": 25.0,
"bb_rank": 191,
"k_value": 95.0,
"k_rank": 93,
"k_per_9_value": 8.382353,
"k_per_9_rank": 24,
"whip_value": 1.0686,
"whip_rank": null,
"war_value": 2.74,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9765,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9765,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.94,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9821,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0057,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 5,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 3,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"Pitches": 102,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was +3."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -9 outs from the projected workload."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +3."
}
],
"provenance": {
"prediction": "output/games/20260822_MIN@SD.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_NYM@CHW | away | Christian Scott | Christian Scott | True | 5.0 | 4.2 | -1 | 1 | 4 | 3 | 4/5 | 3/4 | 5/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.5078740157480315,
"WHIP": 1.2874015748031495,
"IP": 84.2,
"games_started": null,
"games_pitched": 18,
"role_avg_IP": 4.704,
"recent_avg_IP": 5.0,
"last_start_IP": 6.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.187,
"sample_weight": 1.0,
"run_prevention_factor": 0.9841,
"strikeout_factor": 1.0434,
"walk_factor": 1.008,
"homer_factor": 0.9715,
"regression_flag": "neutral",
"k_percent": 28.6,
"bb_percent": 9.5,
"woba": 0.304,
"xwoba": 0.304,
"barrel_percent": 6.8,
"hard_hit_percent": 34.7,
"whiff_percent": 26.6
},
"espn_rank": {
"rank": 86,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "681035",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 18,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 14.0,
"R": 14.0,
"H": 27.0,
"BB": 9.0,
"SO": 33.0,
"HR": 1.0,
"BF": 114.0,
"Pitches": 455.0
},
"per_game": {
"IP": 5.0,
"ER": 2.8,
"R": 2.8,
"H": 5.4,
"BB": 1.8,
"SO": 6.6,
"HR": 0.2,
"BF": 22.8,
"Pitches": 91.0
},
"rates": {
"ERA": 5.04,
"WHIP": 1.44,
"ER_per_IP": 0.56,
"H_per_IP": 1.08,
"BB_per_IP": 0.36,
"SO_per_IP": 1.32,
"HR_per_IP": 0.04
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.2,
"ER": 23.0,
"R": 23.0,
"H": 45.0,
"BB": 17.0,
"SO": 64.0,
"HR": 7.0,
"BF": 211.0,
"Pitches": 876.0
},
"per_game": {
"IP": 5.0,
"ER": 2.3,
"R": 2.3,
"H": 4.5,
"BB": 1.7,
"SO": 6.4,
"HR": 0.7,
"BF": 21.1,
"Pitches": 87.6
},
"rates": {
"ERA": 4.2534,
"WHIP": 1.274,
"ER_per_IP": 0.4726,
"H_per_IP": 0.92466,
"BB_per_IP": 0.34932,
"SO_per_IP": 1.31507,
"HR_per_IP": 0.14384
}
},
"season": {
"games": 18,
"totals": {
"IP": 84.2,
"ER": 33.0,
"R": 34.0,
"H": 74.0,
"BB": 35.0,
"SO": 105.0,
"HR": 8.0,
"BF": 367.0,
"Pitches": 1533.0
},
"per_game": {
"IP": 4.2,
"ER": 1.8333,
"R": 1.8889,
"H": 4.1111,
"BB": 1.9444,
"SO": 5.8333,
"HR": 0.4444,
"BF": 20.3889,
"Pitches": 85.1667
},
"rates": {
"ERA": 3.5079,
"WHIP": 1.2874,
"ER_per_IP": 0.38976,
"H_per_IP": 0.87402,
"BB_per_IP": 0.41339,
"SO_per_IP": 1.24016,
"HR_per_IP": 0.09449
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.458,
"predicted_H": 4.861,
"predicted_BB": 1.815,
"predicted_SO": 6.065,
"predicted_HR": 0.497,
"predicted_ERA": 4.4718,
"predicted_WHIP": 1.3492
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4419,
"form_weight": 0.5581,
"form_reliability": 0.7826,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.458,
"final": 1.8138,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.861,
"final": 4.4806,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.815,
"final": 2.3386,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 6.065,
"final": 5.5944,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.497,
"final": 0.2774,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4718,
"final": 4.4718,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3492,
"final": 1.3492,
"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": 45,
"BB": 17,
"SO": 64,
"HR": 7,
"ERA": 4.2534246575342465,
"WHIP": 1.273972602739726,
"K9": 11.835616438356164,
"HR9": 1.2945205479452053,
"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-16T00:00:00"
},
"recent_form_boost": 0.9811478301043717,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "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": 3.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 1.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": "NYM",
"games": 129,
"wins": 58,
"losses": 71,
"win_pct": 0.4496,
"runs_scored": 535.0,
"runs_allowed": 579.0,
"run_differential": -44.0,
"run_differential_per_game": -0.3411,
"avg_runs_scored": 4.1473,
"avg_runs_allowed": 4.4884,
"offense_index": 0.9286,
"defense_index": 0.9951,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 3.7,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.0498
},
"opponent": {
"team": "CHW",
"games": 128,
"wins": 67,
"losses": 61,
"win_pct": 0.5234,
"runs_scored": 611.0,
"runs_allowed": 564.0,
"run_differential": 47.0,
"run_differential_per_game": 0.3672,
"avg_runs_scored": 4.7734,
"avg_runs_allowed": 4.4062,
"offense_index": 1.0688,
"defense_index": 1.0136,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 3.9,
"run_differential": 11.0
},
"available": true,
"quality_score": 0.1001
},
"edges": {
"quality_edge": -0.1499,
"offense_edge": -0.0714,
"opponent_offense_edge": 0.0688,
"defense_strength": -0.0049,
"opponent_defense_weakness": -0.0136,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9911,
"run_prevention": 1.019,
"strikeout": 0.99
},
"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": 340.0,
"k_percent": 28.6,
"bb_percent": 9.5,
"woba": 0.304,
"xwoba": 0.304,
"sweet_spot_percent": 40.6,
"barrel_batted_rate": 6.8,
"hard_hit_percent": 34.7,
"avg_best_speed": 76.1623,
"avg_hyper_speed": 93.1571,
"whiff_percent": 26.6,
"swing_percent": 49.8
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.1225,
"command_and_miss": 0.4514,
"regression_edge": 0.0,
"xwoba_edge": 0.2,
"barrel_edge": 0.0667,
"hard_hit_edge": 0.4286,
"whiff_edge": 0.1714,
"bb_edge": -0.1,
"pitch_design_score": 0.0126
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "681035",
"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": 90.14585132299509,
"release_spin_rate": 2347.464230297421,
"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": 90.14585132299509,
"release_spin_rate": 2347.464230297421,
"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.1459,
"release_spin_rate": 2347.4642,
"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.0126,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0903,
"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.187,
"sample_weight": 1.0,
"run_prevention_factor": 0.9841,
"strikeout_factor": 1.0434,
"walk_factor": 1.008,
"homer_factor": 0.9715,
"woba_minus_xwoba": 0.0,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "681035",
"espn_id": 4414215,
"player_name": "Christian Scott",
"team": "NYM",
"role": "pitcher",
"espn_rank": 86,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 86,
"gp_value": 18.0,
"gp_rank": 381,
"gs_value": 18.0,
"gs_rank": 101,
"qs_value": 2.0,
"qs_rank": 149,
"era_value": 3.5078,
"era_rank": null,
"w_value": 4.0,
"w_rank": 164,
"l_value": 3.0,
"l_rank": 214,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 84.2,
"ip_rank": 134,
"h_value": 74.0,
"h_rank": 142,
"er_value": 33.0,
"er_rank": 156,
"hr_value": 8.0,
"hr_rank": 185,
"bb_value": 35.0,
"bb_rank": 91,
"k_value": 105.0,
"k_rank": 75,
"k_per_9_value": 11.161417,
"k_per_9_rank": 15,
"whip_value": 1.2874,
"whip_rank": null,
"war_value": 1.72,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9841,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9841,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.008,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9715,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0434,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 100,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was +3."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260822_NYM@CHW.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_NYM@CHW | home | Luis Castillo | Luis Castillo | True | 5.1 | 2.2 | -8 | 1 | 4 | 3 | 3/8 | 4/1 | 5/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.994219653179191,
"WHIP": 1.369942196531792,
"IP": 115.1,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 5.2,
"recent_avg_IP": 5.533,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3466,
"sample_weight": 1.0,
"run_prevention_factor": 1.0295,
"strikeout_factor": 0.9851,
"walk_factor": 0.96,
"homer_factor": 1.0955,
"regression_flag": "neutral",
"k_percent": 20.1,
"bb_percent": 7.1,
"woba": 0.337,
"xwoba": 0.337,
"barrel_percent": 9.9,
"hard_hit_percent": 41.8,
"whiff_percent": 24.9
},
"espn_rank": {
"rank": 772,
"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": "622491",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.2,
"ER": 16.0,
"R": 17.0,
"H": 30.0,
"BB": 8.0,
"SO": 21.0,
"HR": 7.0,
"BF": 118.0,
"Pitches": 465.0
},
"per_game": {
"IP": 5.2,
"ER": 3.2,
"R": 3.4,
"H": 6.0,
"BB": 1.6,
"SO": 4.2,
"HR": 1.4,
"BF": 23.6,
"Pitches": 93.0
},
"rates": {
"ERA": 5.2048,
"WHIP": 1.3735,
"ER_per_IP": 0.57831,
"H_per_IP": 1.08434,
"BB_per_IP": 0.28916,
"SO_per_IP": 0.75904,
"HR_per_IP": 0.25301
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.1,
"ER": 29.0,
"R": 34.0,
"H": 62.0,
"BB": 13.0,
"SO": 41.0,
"HR": 11.0,
"BF": 237.0,
"Pitches": 895.0
},
"per_game": {
"IP": 5.1,
"ER": 2.9,
"R": 3.4,
"H": 6.2,
"BB": 1.3,
"SO": 4.1,
"HR": 1.1,
"BF": 23.7,
"Pitches": 89.5
},
"rates": {
"ERA": 4.8037,
"WHIP": 1.3804,
"ER_per_IP": 0.53374,
"H_per_IP": 1.1411,
"BB_per_IP": 0.23926,
"SO_per_IP": 0.7546,
"HR_per_IP": 0.20245
}
},
"season": {
"games": 23,
"totals": {
"IP": 115.1,
"ER": 64.0,
"R": 74.0,
"H": 122.0,
"BB": 36.0,
"SO": 102.0,
"HR": 19.0,
"BF": 508.0,
"Pitches": 2041.0
},
"per_game": {
"IP": 5.0,
"ER": 2.7826,
"R": 3.2174,
"H": 5.3043,
"BB": 1.5652,
"SO": 4.4348,
"HR": 0.8261,
"BF": 22.087,
"Pitches": 88.7391
},
"rates": {
"ERA": 4.9942,
"WHIP": 1.3699,
"ER_per_IP": 0.55491,
"H_per_IP": 1.0578,
"BB_per_IP": 0.31214,
"SO_per_IP": 0.88439,
"HR_per_IP": 0.16474
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.961,
"predicted_H": 5.817,
"predicted_BB": 1.579,
"predicted_SO": 4.39,
"predicted_HR": 1.109,
"predicted_ERA": 4.9327,
"predicted_WHIP": 1.3692
}
},
"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": 1.0,
"form": 2.961,
"final": 2.1267,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.817,
"final": 4.6185,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.579,
"final": 2.609,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.39,
"final": 3.7986,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.109,
"final": 1.0626,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.9327,
"final": 4.9327,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3692,
"final": 1.3692,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 54.1,
"ER": 29,
"H": 62,
"BB": 13,
"SO": 41,
"HR": 11,
"ERA": 4.803680981595091,
"WHIP": 1.3803680981595092,
"K9": 6.791411042944785,
"HR9": 1.822085889570552,
"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-17T00:00:00"
},
"recent_form_boost": 1.0457115539467112,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_BB": 4.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "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": 1.0,
"predicted_H": 3.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_R": 1.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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": "CHW",
"games": 128,
"wins": 67,
"losses": 61,
"win_pct": 0.5234,
"runs_scored": 611.0,
"runs_allowed": 564.0,
"run_differential": 47.0,
"run_differential_per_game": 0.3672,
"avg_runs_scored": 4.7734,
"avg_runs_allowed": 4.4062,
"offense_index": 1.0688,
"defense_index": 1.0136,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 3.9,
"run_differential": 11.0
},
"available": true,
"quality_score": 0.1001
},
"opponent": {
"team": "NYM",
"games": 129,
"wins": 58,
"losses": 71,
"win_pct": 0.4496,
"runs_scored": 535.0,
"runs_allowed": 579.0,
"run_differential": -44.0,
"run_differential_per_game": -0.3411,
"avg_runs_scored": 4.1473,
"avg_runs_allowed": 4.4884,
"offense_index": 0.9286,
"defense_index": 0.9951,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 3.7,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.0498
},
"edges": {
"quality_edge": 0.1499,
"offense_edge": 0.0688,
"opponent_offense_edge": -0.0714,
"defense_strength": 0.0136,
"opponent_defense_weakness": 0.0049,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0093,
"run_prevention": 0.9797,
"strikeout": 1.0102
},
"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": 479.0,
"k_percent": 20.1,
"bb_percent": 7.1,
"woba": 0.337,
"xwoba": 0.337,
"sweet_spot_percent": 34.1,
"barrel_batted_rate": 9.9,
"hard_hit_percent": 41.8,
"avg_best_speed": 79.8783,
"avg_hyper_speed": 94.4328,
"whiff_percent": 24.9,
"swing_percent": 52.1
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.6063,
"command_and_miss": -0.06,
"regression_edge": 0.0,
"xwoba_edge": -0.7429,
"barrel_edge": -0.6222,
"hard_hit_edge": -0.5857,
"whiff_edge": -0.0714,
"bb_edge": 0.5,
"pitch_design_score": 0.1071
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "622491",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 91,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 91,
"pitch_usage": 0.0,
"release_speed": 91.83201706477074,
"release_spin_rate": 2189.9648452990846,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 91,
"pitch_usage": 0.0,
"release_speed": 91.83201706477074,
"release_spin_rate": 2189.9648452990846,
"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.832,
"release_spin_rate": 2189.9648,
"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.1071,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.7648,
"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.3466,
"sample_weight": 1.0,
"run_prevention_factor": 1.0295,
"strikeout_factor": 0.9851,
"walk_factor": 0.96,
"homer_factor": 1.0955,
"woba_minus_xwoba": 0.0,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "622491",
"espn_id": 35124,
"player_name": "Luis Castillo",
"team": "CHW",
"role": "pitcher",
"espn_rank": 772,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 772,
"gp_value": 23.0,
"gp_rank": 309,
"gs_value": 20.0,
"gs_rank": 85,
"qs_value": 5.0,
"qs_rank": 98,
"era_value": 4.9942,
"era_rank": null,
"w_value": 4.0,
"w_rank": 164,
"l_value": 9.0,
"l_rank": 17,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 1.0,
"hld_rank": 250,
"ip_value": 115.1,
"ip_rank": 85,
"h_value": 122.0,
"h_rank": 46,
"er_value": 64.0,
"er_rank": 24,
"hr_value": 19.0,
"hr_rank": 27,
"bb_value": 36.0,
"bb_rank": 81,
"k_value": 102.0,
"k_rank": 79,
"k_per_9_value": 7.9595375,
"k_per_9_rank": 25,
"whip_value": 1.3699,
"whip_rank": null,
"war_value": -0.65,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0295,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0295,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.96,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0955,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9851,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 3,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 4,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 96,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was +3."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -8 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 5",
"detail": "Actual minus predicted hits was +5."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
}
],
"provenance": {
"prediction": "output/games/20260822_NYM@CHW.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_OAK@HOU | away | Jacob Lopez | Jacob Lopez | True | 4.2 | 6.0 | 4 | 3 | 1 | -2 | 4/3 | 3/1 | 6/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.215909090909091,
"WHIP": 1.5340909090909092,
"IP": 88.0,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 4.667,
"recent_avg_IP": 5.667,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.3175,
"sample_weight": 1.0,
"run_prevention_factor": 0.973,
"strikeout_factor": 0.9846,
"walk_factor": 1.05,
"homer_factor": 0.898,
"regression_flag": "positive_pitcher_regression",
"k_percent": 20.5,
"bb_percent": 11.6,
"woba": 0.347,
"xwoba": 0.288,
"barrel_percent": 5.3,
"hard_hit_percent": 28.9,
"whiff_percent": 24.4
},
"espn_rank": {
"rank": 224,
"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": "682052",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.1,
"ER": 7.0,
"R": 8.0,
"H": 22.0,
"BB": 10.0,
"SO": 32.0,
"HR": 4.0,
"BF": 115.0,
"Pitches": 461.0
},
"per_game": {
"IP": 5.2,
"ER": 1.4,
"R": 1.6,
"H": 4.4,
"BB": 2.0,
"SO": 6.4,
"HR": 0.8,
"BF": 23.0,
"Pitches": 92.2
},
"rates": {
"ERA": 2.2235,
"WHIP": 1.1294,
"ER_per_IP": 0.24706,
"H_per_IP": 0.77647,
"BB_per_IP": 0.35294,
"SO_per_IP": 1.12941,
"HR_per_IP": 0.14118
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 44.0,
"ER": 21.0,
"R": 22.0,
"H": 40.0,
"BB": 16.0,
"SO": 49.0,
"HR": 4.0,
"BF": 185.0,
"Pitches": 767.0
},
"per_game": {
"IP": 4.1,
"ER": 2.1,
"R": 2.2,
"H": 4.0,
"BB": 1.6,
"SO": 4.9,
"HR": 0.4,
"BF": 18.5,
"Pitches": 76.7
},
"rates": {
"ERA": 4.2955,
"WHIP": 1.2727,
"ER_per_IP": 0.47727,
"H_per_IP": 0.90909,
"BB_per_IP": 0.36364,
"SO_per_IP": 1.11364,
"HR_per_IP": 0.09091
}
},
"season": {
"games": 20,
"totals": {
"IP": 88.0,
"ER": 51.0,
"R": 53.0,
"H": 89.0,
"BB": 46.0,
"SO": 81.0,
"HR": 15.0,
"BF": 396.0,
"Pitches": 1598.0
},
"per_game": {
"IP": 4.1,
"ER": 2.55,
"R": 2.65,
"H": 4.45,
"BB": 2.3,
"SO": 4.05,
"HR": 0.75,
"BF": 19.8,
"Pitches": 79.9
},
"rates": {
"ERA": 5.2159,
"WHIP": 1.5341,
"ER_per_IP": 0.57955,
"H_per_IP": 1.01136,
"BB_per_IP": 0.52273,
"SO_per_IP": 0.92045,
"HR_per_IP": 0.17045
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.084,
"predicted_H": 4.466,
"predicted_BB": 1.934,
"predicted_SO": 5.293,
"predicted_HR": 0.668,
"predicted_ERA": 3.7418,
"predicted_WHIP": 1.2767
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4345,
"form_weight": 0.5655,
"form_reliability": 0.8,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.0,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.084,
"final": 2.0475,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.466,
"final": 4.2635,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.934,
"final": 2.3972,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 5.293,
"final": 5.6002,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.668,
"final": 0.3778,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.7418,
"final": 3.7418,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2767,
"final": 1.2767,
"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.0,
"ER": 21,
"H": 40,
"BB": 16,
"SO": 49,
"HR": 4,
"ERA": 4.295454545454546,
"WHIP": 1.272727272727273,
"K9": 10.022727272727275,
"HR9": 0.8181818181818183,
"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-16T00:00:00"
},
"recent_form_boost": 0.985845059245094,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 6.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": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 0
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 3,
"predicted_H": 4,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"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": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.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": "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": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 4.2,
"delta": -1.1333,
"percent_delta": -0.2125,
"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": 4.2,
"delta": -1.1333,
"percent_delta": -0.2125,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 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.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 4.2,
"delta": -1.1333,
"percent_delta": -0.2125,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 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": "OAK",
"games": 129,
"wins": 49,
"losses": 80,
"win_pct": 0.3798,
"runs_scored": 557.0,
"runs_allowed": 746.0,
"run_differential": -189.0,
"run_differential_per_game": -1.4651,
"avg_runs_scored": 4.3178,
"avg_runs_allowed": 5.7829,
"offense_index": 0.9668,
"defense_index": 0.7723,
"current_streak": "L5",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 6.2,
"run_differential": -21.0
},
"available": true,
"quality_score": -0.3876
},
"opponent": {
"team": "HOU",
"games": 129,
"wins": 65,
"losses": 64,
"win_pct": 0.5039,
"runs_scored": 587.0,
"runs_allowed": 629.0,
"run_differential": -42.0,
"run_differential_per_game": -0.3256,
"avg_runs_scored": 4.5504,
"avg_runs_allowed": 4.876,
"offense_index": 1.0188,
"defense_index": 0.916,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 5.1,
"run_differential": -14.0
},
"available": true,
"quality_score": -0.0368
},
"edges": {
"quality_edge": -0.3508,
"offense_edge": -0.0332,
"opponent_offense_edge": 0.0188,
"defense_strength": -0.2277,
"opponent_defense_weakness": 0.084,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9784,
"run_prevention": 1.0433,
"strikeout": 0.988
},
"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": 370.0,
"k_percent": 20.5,
"bb_percent": 11.6,
"woba": 0.347,
"xwoba": 0.288,
"sweet_spot_percent": 30.8,
"barrel_batted_rate": 5.3,
"hard_hit_percent": 28.9,
"avg_best_speed": 72.4829,
"avg_hyper_speed": 92.4219,
"whiff_percent": 24.4,
"swing_percent": 45.4
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.438,
"command_and_miss": -0.2843,
"regression_edge": 1.6857,
"xwoba_edge": 0.6571,
"barrel_edge": 0.4,
"hard_hit_edge": 1.2571,
"whiff_edge": -0.1429,
"bb_edge": -0.625,
"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": 90,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 90,
"pitch_usage": 0.0,
"release_speed": 84.44575706164146,
"release_spin_rate": 2261.9043301766055,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 90,
"pitch_usage": 0.0,
"release_speed": 84.44575706164146,
"release_spin_rate": 2261.9043301766055,
"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.4458,
"release_spin_rate": 2261.9043,
"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.3175,
"sample_weight": 1.0,
"run_prevention_factor": 0.973,
"strikeout_factor": 0.9846,
"walk_factor": 1.05,
"homer_factor": 0.898,
"woba_minus_xwoba": 0.059,
"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": 224,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 224,
"gp_value": 20.0,
"gp_rank": 359,
"gs_value": 17.0,
"gs_rank": 106,
"qs_value": 2.0,
"qs_rank": 149,
"era_value": 5.2159,
"era_rank": null,
"w_value": 5.0,
"w_rank": 117,
"l_value": 4.0,
"l_rank": 153,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 1.0,
"hld_rank": 250,
"ip_value": 88.0,
"ip_rank": 128,
"h_value": 89.0,
"h_rank": 108,
"er_value": 51.0,
"er_rank": 78,
"hr_value": 15.0,
"hr_rank": 66,
"bb_value": 46.0,
"bb_rank": 34,
"k_value": 81.0,
"k_rank": 125,
"k_per_9_value": 8.284091,
"k_per_9_rank": 26,
"whip_value": 1.534,
"whip_rank": null,
"war_value": 0.62,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.973,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.973,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.05,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.898,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 0.9846,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 95,
"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/20260822_OAK@HOU.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_OAK@HOU | home | Hunter Brown | Hunter Brown | True | 5.2 | 5.2 | 0 | 3 | 1 | -2 | 5/7 | 1/3 | 6/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.669902912621359,
"WHIP": 1.2961165048543688,
"IP": 68.2,
"games_started": null,
"games_pitched": 13,
"role_avg_IP": 5.282,
"recent_avg_IP": 5.733,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1907,
"sample_weight": 1.0,
"run_prevention_factor": 0.9838,
"strikeout_factor": 1.0189,
"walk_factor": 1.092,
"homer_factor": 0.9755,
"regression_flag": "neutral",
"k_percent": 24.7,
"bb_percent": 13.7,
"woba": 0.302,
"xwoba": 0.303,
"barrel_percent": 6.3,
"hard_hit_percent": 37.1,
"whiff_percent": 26.2
},
"espn_rank": {
"rank": 133,
"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": "686613",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 13,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.2,
"ER": 10.0,
"R": 10.0,
"H": 19.0,
"BB": 12.0,
"SO": 29.0,
"HR": 4.0,
"BF": 114.0,
"Pitches": 466.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0,
"R": 2.0,
"H": 3.8,
"BB": 2.4,
"SO": 5.8,
"HR": 0.8,
"BF": 22.8,
"Pitches": 93.2
},
"rates": {
"ERA": 3.1395,
"WHIP": 1.0814,
"ER_per_IP": 0.34884,
"H_per_IP": 0.66279,
"BB_per_IP": 0.4186,
"SO_per_IP": 1.01163,
"HR_per_IP": 0.13953
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.1,
"ER": 26.0,
"R": 28.0,
"H": 41.0,
"BB": 31.0,
"SO": 48.0,
"HR": 9.0,
"BF": 227.0,
"Pitches": 926.0
},
"per_game": {
"IP": 5.1,
"ER": 2.6,
"R": 2.8,
"H": 4.1,
"BB": 3.1,
"SO": 4.8,
"HR": 0.9,
"BF": 22.7,
"Pitches": 92.6
},
"rates": {
"ERA": 4.4713,
"WHIP": 1.3758,
"ER_per_IP": 0.49682,
"H_per_IP": 0.78344,
"BB_per_IP": 0.59236,
"SO_per_IP": 0.9172,
"HR_per_IP": 0.17197
}
},
"season": {
"games": 13,
"totals": {
"IP": 68.2,
"ER": 28.0,
"R": 30.0,
"H": 49.0,
"BB": 40.0,
"SO": 72.0,
"HR": 9.0,
"BF": 291.0,
"Pitches": 1198.0
},
"per_game": {
"IP": 5.1,
"ER": 2.1538,
"R": 2.3077,
"H": 3.7692,
"BB": 3.0769,
"SO": 5.5385,
"HR": 0.6923,
"BF": 22.3846,
"Pitches": 92.1538
},
"rates": {
"ERA": 3.6699,
"WHIP": 1.2961,
"ER_per_IP": 0.40777,
"H_per_IP": 0.71359,
"BB_per_IP": 0.58252,
"SO_per_IP": 1.04854,
"HR_per_IP": 0.13107
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.421,
"predicted_H": 4.358,
"predicted_BB": 2.61,
"predicted_SO": 5.403,
"predicted_HR": 0.824,
"predicted_ERA": 3.9364,
"predicted_WHIP": 1.259
}
},
"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": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.421,
"final": 2.6916,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.358,
"final": 4.6581,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.61,
"final": 1.8575,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 5.403,
"final": 5.682,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.824,
"final": 0.9063,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.9364,
"final": 3.9364,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.259,
"final": 1.259,
"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": 26,
"H": 41,
"BB": 31,
"SO": 48,
"HR": 9,
"ERA": 4.471337579617834,
"WHIP": 1.375796178343949,
"K9": 8.254777070063694,
"HR9": 1.5477707006369426,
"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-16T00:00:00"
},
"recent_form_boost": 1.0082086232288807,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 1.0,
"predicted_SO": 6.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "686613",
"player_name": "Hunter Brown",
"position": "Starter",
"team": "HOU",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"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.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"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.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": "HOU",
"games": 129,
"wins": 65,
"losses": 64,
"win_pct": 0.5039,
"runs_scored": 587.0,
"runs_allowed": 629.0,
"run_differential": -42.0,
"run_differential_per_game": -0.3256,
"avg_runs_scored": 4.5504,
"avg_runs_allowed": 4.876,
"offense_index": 1.0188,
"defense_index": 0.916,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 5.1,
"run_differential": -14.0
},
"available": true,
"quality_score": -0.0368
},
"opponent": {
"team": "OAK",
"games": 129,
"wins": 49,
"losses": 80,
"win_pct": 0.3798,
"runs_scored": 557.0,
"runs_allowed": 746.0,
"run_differential": -189.0,
"run_differential_per_game": -1.4651,
"avg_runs_scored": 4.3178,
"avg_runs_allowed": 5.7829,
"offense_index": 0.9668,
"defense_index": 0.7723,
"current_streak": "L5",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 6.2,
"run_differential": -21.0
},
"available": true,
"quality_score": -0.3876
},
"edges": {
"quality_edge": 0.3508,
"offense_edge": 0.0188,
"opponent_offense_edge": -0.0332,
"defense_strength": -0.084,
"opponent_defense_weakness": 0.2277,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0128,
"run_prevention": 0.9855,
"strikeout": 1.0132
},
"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": 269.0,
"k_percent": 24.7,
"bb_percent": 13.7,
"woba": 0.302,
"xwoba": 0.303,
"sweet_spot_percent": 28.6,
"barrel_batted_rate": 6.3,
"hard_hit_percent": 37.1,
"avg_best_speed": 73.3848,
"avg_hyper_speed": 93.3964,
"whiff_percent": 26.2,
"swing_percent": 40.8
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.3406,
"command_and_miss": -0.0293,
"regression_edge": -0.0286,
"xwoba_edge": 0.2286,
"barrel_edge": 0.1778,
"hard_hit_edge": 0.0857,
"whiff_edge": 0.1143,
"bb_edge": -1.15,
"pitch_design_score": 0.1298
},
"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.23767469659295,
"release_spin_rate": 2203.4427614314823,
"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.23767469659295,
"release_spin_rate": 2203.4427614314823,
"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.2377,
"release_spin_rate": 2203.4428,
"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.1298,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.927,
"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.1907,
"sample_weight": 1.0,
"run_prevention_factor": 0.9838,
"strikeout_factor": 1.0189,
"walk_factor": 1.092,
"homer_factor": 0.9755,
"woba_minus_xwoba": -0.001,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "686613",
"espn_id": 4717803,
"player_name": "Hunter Brown",
"team": "HOU",
"role": "pitcher",
"espn_rank": 133,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 133,
"gp_value": 13.0,
"gp_rank": 460,
"gs_value": 13.0,
"gs_rank": 141,
"qs_value": 5.0,
"qs_rank": 98,
"era_value": 3.6699,
"era_rank": null,
"w_value": 3.0,
"w_rank": 223,
"l_value": 3.0,
"l_rank": 214,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 68.2,
"ip_rank": 164,
"h_value": 49.0,
"h_rank": 213,
"er_value": 28.0,
"er_rank": 186,
"hr_value": 9.0,
"hr_rank": 157,
"bb_value": 40.0,
"bb_rank": 65,
"k_value": 72.0,
"k_rank": 147,
"k_per_9_value": 9.436893,
"k_per_9_rank": 24,
"whip_value": 1.2961,
"whip_rank": null,
"war_value": 1.25,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9838,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9838,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.092,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9755,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0189,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 93,
"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/20260822_OAK@HOU.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_PIT@LAD | away | Jared Jones | Jared Jones | True | 4.2 | 4.0 | -2 | 4 | 2 | -2 | 5/3 | 2/5 | 6/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.78125,
"WHIP": 1.203125,
"IP": 64.0,
"games_started": null,
"games_pitched": 14,
"role_avg_IP": 4.571,
"recent_avg_IP": 4.8,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2615,
"sample_weight": 0.992,
"run_prevention_factor": 0.9778,
"strikeout_factor": 1.0578,
"walk_factor": 0.9742,
"homer_factor": 1.0225,
"regression_flag": "neutral",
"k_percent": 26.8,
"bb_percent": 7.8,
"woba": 0.317,
"xwoba": 0.297,
"barrel_percent": 8.6,
"hard_hit_percent": 39.1,
"whiff_percent": 31.0
},
"espn_rank": {
"rank": 212,
"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": "683003",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 14,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.0,
"ER": 16.0,
"R": 16.0,
"H": 24.0,
"BB": 9.0,
"SO": 24.0,
"HR": 6.0,
"BF": 106.0,
"Pitches": 397.0
},
"per_game": {
"IP": 4.2,
"ER": 3.2,
"R": 3.2,
"H": 4.8,
"BB": 1.8,
"SO": 4.8,
"HR": 1.2,
"BF": 21.2,
"Pitches": 79.4
},
"rates": {
"ERA": 6.0,
"WHIP": 1.375,
"ER_per_IP": 0.66667,
"H_per_IP": 1.0,
"BB_per_IP": 0.375,
"SO_per_IP": 1.0,
"HR_per_IP": 0.25
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 46.2,
"ER": 22.0,
"R": 23.0,
"H": 34.0,
"BB": 15.0,
"SO": 54.0,
"HR": 7.0,
"BF": 191.0,
"Pitches": 747.0
},
"per_game": {
"IP": 4.2,
"ER": 2.2,
"R": 2.3,
"H": 3.4,
"BB": 1.5,
"SO": 5.4,
"HR": 0.7,
"BF": 19.1,
"Pitches": 74.7
},
"rates": {
"ERA": 4.2429,
"WHIP": 1.05,
"ER_per_IP": 0.47143,
"H_per_IP": 0.72857,
"BB_per_IP": 0.32143,
"SO_per_IP": 1.15714,
"HR_per_IP": 0.15
}
},
"season": {
"games": 14,
"totals": {
"IP": 64.0,
"ER": 34.0,
"R": 35.0,
"H": 56.0,
"BB": 21.0,
"SO": 72.0,
"HR": 11.0,
"BF": 269.0,
"Pitches": 1048.0
},
"per_game": {
"IP": 4.2,
"ER": 2.4286,
"R": 2.5,
"H": 4.0,
"BB": 1.5,
"SO": 5.1429,
"HR": 0.7857,
"BF": 19.2143,
"Pitches": 74.8571
},
"rates": {
"ERA": 4.7812,
"WHIP": 1.2031,
"ER_per_IP": 0.53125,
"H_per_IP": 0.875,
"BB_per_IP": 0.32812,
"SO_per_IP": 1.125,
"HR_per_IP": 0.17188
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.581,
"predicted_H": 4.224,
"predicted_BB": 1.643,
"predicted_SO": 4.881,
"predicted_HR": 0.867,
"predicted_ERA": 4.9779,
"predicted_WHIP": 1.257
}
},
"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": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.581,
"final": 3.2354,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.224,
"final": 4.5819,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.643,
"final": 1.8076,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.881,
"final": 5.3971,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.867,
"final": 0.4671,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.9779,
"final": 4.9779,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.257,
"final": 1.257,
"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": 46.2,
"ER": 22,
"H": 34,
"BB": 15,
"SO": 54,
"HR": 7,
"ERA": 4.242857142857143,
"WHIP": 1.05,
"K9": 10.414285714285715,
"HR9": 1.35,
"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-15T00:00:00"
},
"recent_form_boost": 0.9743596696347043,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_BB": 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": "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": 2.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 4.6667,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 4.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": 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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PIT",
"games": 130,
"wins": 63,
"losses": 67,
"win_pct": 0.4846,
"runs_scored": 650.0,
"runs_allowed": 620.0,
"run_differential": 30.0,
"run_differential_per_game": 0.2308,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 4.7692,
"offense_index": 1.1195,
"defense_index": 0.9365,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 3.9,
"run_differential": 9.0
},
"available": true,
"quality_score": 0.0153
},
"opponent": {
"team": "LAD",
"games": 129,
"wins": 78,
"losses": 51,
"win_pct": 0.6047,
"runs_scored": 645.0,
"runs_allowed": 499.0,
"run_differential": 146.0,
"run_differential_per_game": 1.1318,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 3.8682,
"offense_index": 1.1195,
"defense_index": 1.1546,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.1,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.2984
},
"edges": {
"quality_edge": -0.2831,
"offense_edge": 0.1195,
"opponent_offense_edge": 0.1195,
"defense_strength": -0.0635,
"opponent_defense_weakness": -0.1546,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.982,
"run_prevention": 1.0396,
"strikeout": 0.9819
},
"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": 248.0,
"k_percent": 26.8,
"bb_percent": 7.8,
"woba": 0.317,
"xwoba": 0.297,
"sweet_spot_percent": 33.9,
"barrel_batted_rate": 8.6,
"hard_hit_percent": 39.1,
"avg_best_speed": 79.2219,
"avg_hyper_speed": 94.2793,
"whiff_percent": 31.0,
"swing_percent": 48.3
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.0413,
"command_and_miss": 0.6407,
"regression_edge": 0.5714,
"xwoba_edge": 0.4,
"barrel_edge": -0.3333,
"hard_hit_edge": -0.2,
"whiff_edge": 0.8,
"bb_edge": 0.325,
"pitch_design_score": 0.2092
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "683003",
"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": 93.65496253351449,
"release_spin_rate": 2507.2309948935354,
"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": 93.65496253351449,
"release_spin_rate": 2507.2309948935354,
"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.655,
"release_spin_rate": 2507.231,
"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.2092,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.494,
"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.2615,
"sample_weight": 0.992,
"run_prevention_factor": 0.9778,
"strikeout_factor": 1.0578,
"walk_factor": 0.9742,
"homer_factor": 1.0225,
"woba_minus_xwoba": 0.02,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "683003",
"espn_id": 4918156,
"player_name": "Jared Jones",
"team": "PIT",
"role": "pitcher",
"espn_rank": 212,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 212,
"gp_value": 14.0,
"gp_rank": 446,
"gs_value": 14.0,
"gs_rank": 132,
"qs_value": 3.0,
"qs_rank": 131,
"era_value": 4.7812,
"era_rank": null,
"w_value": 2.0,
"w_rank": 287,
"l_value": 5.0,
"l_rank": 120,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 64.0,
"ip_rank": 179,
"h_value": 56.0,
"h_rank": 182,
"er_value": 34.0,
"er_rank": 151,
"hr_value": 11.0,
"hr_rank": 130,
"bb_value": 21.0,
"bb_rank": 239,
"k_value": 72.0,
"k_rank": 147,
"k_per_9_value": 10.125,
"k_per_9_rank": 22,
"whip_value": 1.2031,
"whip_rank": null,
"war_value": 0.67,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.978,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 0.978,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9744,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0223,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0573,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 5,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 91,
"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/20260822_PIT@LAD.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_PIT@LAD | home | Tarik Skubal | Tarik Skubal | True | 6.0 | 7.0 | 3 | 3 | 3 | 0 | 4/5 | 1/1 | 7/11 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.850439882697947,
"WHIP": 0.9589442815249266,
"IP": 113.2,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 5.982,
"recent_avg_IP": 6.2,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.7028,
"sample_weight": 1.0,
"run_prevention_factor": 0.9403,
"strikeout_factor": 1.0834,
"walk_factor": 0.908,
"homer_factor": 0.961,
"regression_flag": "neutral",
"k_percent": 30.3,
"bb_percent": 4.5,
"woba": 0.268,
"xwoba": 0.27,
"barrel_percent": 7.3,
"hard_hit_percent": 36.4,
"whiff_percent": 31.9
},
"espn_rank": {
"rank": 18,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "669373",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.0,
"ER": 10.0,
"R": 11.0,
"H": 23.0,
"BB": 9.0,
"SO": 37.0,
"HR": 2.0,
"BF": 125.0,
"Pitches": 472.0
},
"per_game": {
"IP": 6.1,
"ER": 2.0,
"R": 2.2,
"H": 4.6,
"BB": 1.8,
"SO": 7.4,
"HR": 0.4,
"BF": 25.0,
"Pitches": 94.4
},
"rates": {
"ERA": 2.9032,
"WHIP": 1.0323,
"ER_per_IP": 0.32258,
"H_per_IP": 0.74194,
"BB_per_IP": 0.29032,
"SO_per_IP": 1.19355,
"HR_per_IP": 0.06452
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.0,
"ER": 18.0,
"R": 20.0,
"H": 42.0,
"BB": 12.0,
"SO": 78.0,
"HR": 7.0,
"BF": 234.0,
"Pitches": 920.0
},
"per_game": {
"IP": 6.0,
"ER": 1.8,
"R": 2.0,
"H": 4.2,
"BB": 1.2,
"SO": 7.8,
"HR": 0.7,
"BF": 23.4,
"Pitches": 92.0
},
"rates": {
"ERA": 2.7,
"WHIP": 0.9,
"ER_per_IP": 0.3,
"H_per_IP": 0.7,
"BB_per_IP": 0.2,
"SO_per_IP": 1.3,
"HR_per_IP": 0.11667
}
},
"season": {
"games": 19,
"totals": {
"IP": 113.2,
"ER": 36.0,
"R": 40.0,
"H": 89.0,
"BB": 20.0,
"SO": 135.0,
"HR": 12.0,
"BF": 446.0,
"Pitches": 1720.0
},
"per_game": {
"IP": 6.0,
"ER": 1.8947,
"R": 2.1053,
"H": 4.6842,
"BB": 1.0526,
"SO": 7.1053,
"HR": 0.6316,
"BF": 23.4737,
"Pitches": 90.5263
},
"rates": {
"ERA": 2.8504,
"WHIP": 0.9589,
"ER_per_IP": 0.31672,
"H_per_IP": 0.78299,
"BB_per_IP": 0.17595,
"SO_per_IP": 1.18768,
"HR_per_IP": 0.10557
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.159,
"predicted_H": 4.806,
"predicted_BB": 1.609,
"predicted_SO": 7.168,
"predicted_HR": 0.629,
"predicted_ERA": 3.1754,
"predicted_WHIP": 1.0484
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.438,
"form_weight": 0.562,
"form_reliability": 0.7917,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.159,
"final": 2.5274,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.806,
"final": 4.453,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.609,
"final": 1.3423,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 7.168,
"final": 6.6564,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.629,
"final": 0.7915,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.1754,
"final": 3.1754,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0484,
"final": 1.0484,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 60.0,
"ER": 18,
"H": 42,
"BB": 12,
"SO": 78,
"HR": 7,
"ERA": 2.7,
"WHIP": 0.9,
"K9": 11.7,
"HR9": 1.05,
"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-16T00:00:00"
},
"recent_form_boost": 0.7970382410632759,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_BB": 1.0,
"predicted_SO": 6.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": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3,
"predicted_H": 4,
"predicted_BB": 1,
"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": 1.0,
"predicted_ER": 3.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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAD",
"games": 129,
"wins": 78,
"losses": 51,
"win_pct": 0.6047,
"runs_scored": 645.0,
"runs_allowed": 499.0,
"run_differential": 146.0,
"run_differential_per_game": 1.1318,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 3.8682,
"offense_index": 1.1195,
"defense_index": 1.1546,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.1,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.2984
},
"opponent": {
"team": "PIT",
"games": 130,
"wins": 63,
"losses": 67,
"win_pct": 0.4846,
"runs_scored": 650.0,
"runs_allowed": 620.0,
"run_differential": 30.0,
"run_differential_per_game": 0.2308,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 4.7692,
"offense_index": 1.1195,
"defense_index": 0.9365,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 3.9,
"run_differential": 9.0
},
"available": true,
"quality_score": 0.0153
},
"edges": {
"quality_edge": 0.2831,
"offense_edge": 0.1195,
"opponent_offense_edge": 0.1195,
"defense_strength": 0.1546,
"opponent_defense_weakness": 0.0635,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0112,
"run_prevention": 0.9895,
"strikeout": 0.9989
},
"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": 417.0,
"k_percent": 30.3,
"bb_percent": 4.5,
"woba": 0.268,
"xwoba": 0.27,
"sweet_spot_percent": 32.5,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 36.4,
"avg_best_speed": 75.7007,
"avg_hyper_speed": 93.5327,
"whiff_percent": 31.9,
"swing_percent": 53.6
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.7446,
"command_and_miss": 1.0757,
"regression_edge": -0.0571,
"xwoba_edge": 1.1714,
"barrel_edge": -0.0444,
"hard_hit_edge": 0.1857,
"whiff_edge": 0.9286,
"bb_edge": 1.15,
"pitch_design_score": 0.1488
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669373",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 90,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 90,
"pitch_usage": 0.0,
"release_speed": 92.57660227672623,
"release_spin_rate": 2164.27053568276,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 90,
"pitch_usage": 0.0,
"release_speed": 92.57660227672623,
"release_spin_rate": 2164.27053568276,
"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.5766,
"release_spin_rate": 2164.2705,
"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.1488,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.0626,
"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.7028,
"sample_weight": 1.0,
"run_prevention_factor": 0.9403,
"strikeout_factor": 1.0834,
"walk_factor": 0.908,
"homer_factor": 0.961,
"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": 18,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 18,
"gp_value": 19.0,
"gp_rank": 368,
"gs_value": 19.0,
"gs_rank": 92,
"qs_value": 11.0,
"qs_rank": 35,
"era_value": 2.8504,
"era_rank": null,
"w_value": 7.0,
"w_rank": 67,
"l_value": 7.0,
"l_rank": 64,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 113.2,
"ip_rank": 87,
"h_value": 89.0,
"h_rank": 108,
"er_value": 36.0,
"er_rank": 146,
"hr_value": 12.0,
"hr_rank": 115,
"bb_value": 20.0,
"bb_rank": 253,
"k_value": 135.0,
"k_rank": 32,
"k_per_9_value": 10.689149,
"k_per_9_rank": 9,
"whip_value": 0.9589,
"whip_rank": null,
"war_value": 3.25,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9403,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9403,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.908,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.961,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0834,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 7,
"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."
}
],
"provenance": {
"prediction": "output/games/20260822_PIT@LAD.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_SF@BOS | away | Blade Tidwell | Blade Tidwell | True | 5.0 | 5.2 | 2 | 3 | 0 | -3 | 5/3 | 3/2 | 7/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.333333333333333,
"WHIP": 1.2222222222222223,
"IP": 27.0,
"games_started": null,
"games_pitched": 11,
"role_avg_IP": 5.0,
"recent_avg_IP": 5.0,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0243,
"sample_weight": 0.45,
"run_prevention_factor": 0.9979,
"strikeout_factor": 0.9941,
"walk_factor": 1.0,
"homer_factor": 1.0022,
"regression_flag": "neutral",
"k_percent": 18.2,
"bb_percent": 9.1,
"woba": 0.287,
"xwoba": 0.306,
"barrel_percent": 6.3,
"hard_hit_percent": 41.8,
"whiff_percent": 27.1
},
"espn_rank": {
"rank": 390,
"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": 5.416,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5199,
"prior_weight": 0.4801
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "694918",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 11,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 19.0,
"ER": 11.0,
"R": 11.0,
"H": 18.0,
"BB": 9.0,
"SO": 14.0,
"HR": 1.0,
"BF": 82.0,
"Pitches": 331.0
},
"per_game": {
"IP": 3.2,
"ER": 2.2,
"R": 2.2,
"H": 3.6,
"BB": 1.8,
"SO": 2.8,
"HR": 0.2,
"BF": 16.4,
"Pitches": 66.2
},
"rates": {
"ERA": 5.2105,
"WHIP": 1.4211,
"ER_per_IP": 0.57895,
"H_per_IP": 0.94737,
"BB_per_IP": 0.47368,
"SO_per_IP": 0.73684,
"HR_per_IP": 0.05263
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 24.0,
"ER": 13.0,
"R": 13.0,
"H": 21.0,
"BB": 10.0,
"SO": 18.0,
"HR": 2.0,
"BF": 101.0,
"Pitches": 404.0
},
"per_game": {
"IP": 2.1,
"ER": 1.3,
"R": 1.3,
"H": 2.1,
"BB": 1.0,
"SO": 1.8,
"HR": 0.2,
"BF": 10.1,
"Pitches": 40.4
},
"rates": {
"ERA": 4.875,
"WHIP": 1.2917,
"ER_per_IP": 0.54167,
"H_per_IP": 0.875,
"BB_per_IP": 0.41667,
"SO_per_IP": 0.75,
"HR_per_IP": 0.08333
}
},
"season": {
"games": 11,
"totals": {
"IP": 27.0,
"ER": 13.0,
"R": 13.0,
"H": 23.0,
"BB": 10.0,
"SO": 20.0,
"HR": 2.0,
"BF": 110.0,
"Pitches": 441.0
},
"per_game": {
"IP": 2.1,
"ER": 1.1818,
"R": 1.1818,
"H": 2.0909,
"BB": 0.9091,
"SO": 1.8182,
"HR": 0.1818,
"BF": 10.0,
"Pitches": 40.0909
},
"rates": {
"ERA": 4.3333,
"WHIP": 1.2222,
"ER_per_IP": 0.48148,
"H_per_IP": 0.85185,
"BB_per_IP": 0.37037,
"SO_per_IP": 0.74074,
"HR_per_IP": 0.07407
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.0,
"predicted_ER": 2.062,
"predicted_H": 3.681,
"predicted_BB": 1.574,
"predicted_SO": 3.307,
"predicted_HR": 0.417,
"predicted_ERA": 4.7269,
"predicted_WHIP": 1.3386
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5528,
"form_weight": 0.4472,
"form_reliability": 0.5199,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.416,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5199,
"prior_weight": 0.4801
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.0,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.062,
"final": 2.5806,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 3.681,
"final": 4.4102,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.574,
"final": 2.3624,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 3.307,
"final": 4.7958,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.417,
"final": 0.1865,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.7269,
"final": 4.7269,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3386,
"final": 1.3386,
"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": 24.0,
"ER": 13,
"H": 21,
"BB": 10,
"SO": 18,
"HR": 2,
"ERA": 4.875,
"WHIP": 1.2916666666666667,
"K9": 6.75,
"HR9": 0.75,
"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-16T00:00:00"
},
"recent_form_boost": 1.0403511502933973,
"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": 3.0,
"predicted_SO": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.416,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5199,
"prior_weight": 0.4801
}
}
],
"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": 3.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"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": 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": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SF",
"games": 128,
"wins": 52,
"losses": 76,
"win_pct": 0.4062,
"runs_scored": 517.0,
"runs_allowed": 595.0,
"run_differential": -78.0,
"run_differential_per_game": -0.6094,
"avg_runs_scored": 4.0391,
"avg_runs_allowed": 4.6484,
"offense_index": 0.9043,
"defense_index": 0.9608,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.2,
"avg_runs_allowed": 4.7,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.2248
},
"opponent": {
"team": "BOS",
"games": 128,
"wins": 69,
"losses": 59,
"win_pct": 0.5391,
"runs_scored": 581.0,
"runs_allowed": 484.0,
"run_differential": 97.0,
"run_differential_per_game": 0.7578,
"avg_runs_scored": 4.5391,
"avg_runs_allowed": 3.7812,
"offense_index": 1.0163,
"defense_index": 1.1812,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 4.3,
"run_differential": 14.0
},
"available": true,
"quality_score": 0.1266
},
"edges": {
"quality_edge": -0.3514,
"offense_edge": -0.0957,
"opponent_offense_edge": 0.0163,
"defense_strength": -0.0392,
"opponent_defense_weakness": -0.1812,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9841,
"run_prevention": 1.0241,
"strikeout": 0.9882
},
"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": 91.0,
"k_percent": 18.2,
"bb_percent": 9.1,
"woba": 0.287,
"xwoba": 0.306,
"sweet_spot_percent": 26.6,
"barrel_batted_rate": 6.3,
"hard_hit_percent": 41.8,
"avg_best_speed": 76.3415,
"avg_hyper_speed": 94.3261,
"whiff_percent": 27.1,
"swing_percent": 46.0
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.2747,
"command_and_miss": -0.1721,
"regression_edge": -0.5429,
"xwoba_edge": 0.1429,
"barrel_edge": 0.1778,
"hard_hit_edge": -0.5857,
"whiff_edge": 0.2429,
"bb_edge": 0.0,
"pitch_design_score": -0.01
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "694918",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 55,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 55,
"pitch_usage": 0.0,
"release_speed": 89.74092946656602,
"release_spin_rate": 2498.16315798867,
"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": 55,
"pitch_usage": 0.0,
"release_speed": 89.74092946656602,
"release_spin_rate": 2498.16315798867,
"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.7409,
"release_spin_rate": 2498.1632,
"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.01,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0716,
"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.0243,
"sample_weight": 0.45,
"run_prevention_factor": 0.9979,
"strikeout_factor": 0.9941,
"walk_factor": 1.0,
"homer_factor": 1.0022,
"woba_minus_xwoba": -0.019,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "694918",
"espn_id": 4719088,
"player_name": "Blade Tidwell",
"team": "SF",
"role": "pitcher",
"espn_rank": 390,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 390,
"gp_value": 11.0,
"gp_rank": 479,
"gs_value": 3.0,
"gs_rank": 239,
"qs_value": 0.0,
"qs_rank": 203,
"era_value": 4.3333,
"era_rank": null,
"w_value": 0.0,
"w_rank": 498,
"l_value": 0.0,
"l_rank": 550,
"sv_value": 1.0,
"sv_rank": 123,
"hld_value": 1.0,
"hld_rank": 250,
"ip_value": 27.0,
"ip_rank": 431,
"h_value": 23.0,
"h_rank": 446,
"er_value": 13.0,
"er_rank": 413,
"hr_value": 2.0,
"hr_rank": 480,
"bb_value": 10.0,
"bb_rank": 449,
"k_value": 20.0,
"k_rank": 458,
"k_per_9_value": 6.6666665,
"k_per_9_rank": 28,
"whip_value": 1.2222,
"whip_rank": null,
"war_value": 0.1,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9991,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 0.9991,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.001,
"adjusted": 0
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9973,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 102,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
}
],
"provenance": {
"prediction": "output/games/20260822_SF@BOS.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"
}
} |
| 20260822 | 20260822_SF@BOS | home | Patrick Sandoval | Patrick Sandoval | True | 5.0 | 5.2 | 2 | 3 | 2 | -1 | 7/5 | 1/2 | 7/6 | Last 10 before this game (7 available){
"model_context": {
"embedded_season": {
"ERA": 4.764705882352941,
"WHIP": 1.8529411764705883,
"IP": 34.0,
"games_started": null,
"games_pitched": 7,
"role_avg_IP": 4.857,
"recent_avg_IP": 4.933,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0682,
"sample_weight": 0.54,
"run_prevention_factor": 1.0058,
"strikeout_factor": 0.9994,
"walk_factor": 1.0097,
"homer_factor": 0.9799,
"regression_flag": "positive_pitcher_regression",
"k_percent": 21.9,
"bb_percent": 10.0,
"woba": 0.383,
"xwoba": 0.334,
"barrel_percent": 5.6,
"hard_hit_percent": 32.4,
"whiff_percent": 25.5
},
"espn_rank": {
"rank": 673,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.7627118644067797,
"last_10": 0.23728813559322032
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663776",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 7,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.2,
"ER": 13.0,
"R": 15.0,
"H": 33.0,
"BB": 14.0,
"SO": 25.0,
"HR": 2.0,
"BF": 118.0,
"Pitches": 438.0
},
"per_game": {
"IP": 5.0,
"ER": 2.6,
"R": 3.0,
"H": 6.6,
"BB": 2.8,
"SO": 5.0,
"HR": 0.4,
"BF": 23.6,
"Pitches": 87.6
},
"rates": {
"ERA": 4.7432,
"WHIP": 1.9054,
"ER_per_IP": 0.52703,
"H_per_IP": 1.33784,
"BB_per_IP": 0.56757,
"SO_per_IP": 1.01351,
"HR_per_IP": 0.08108
}
},
"last_10": {
"games": 7,
"totals": {
"IP": 34.0,
"ER": 18.0,
"R": 21.0,
"H": 47.0,
"BB": 16.0,
"SO": 35.0,
"HR": 3.0,
"BF": 160.0,
"Pitches": 579.0
},
"per_game": {
"IP": 5.0,
"ER": 2.5714,
"R": 3.0,
"H": 6.7143,
"BB": 2.2857,
"SO": 5.0,
"HR": 0.4286,
"BF": 22.8571,
"Pitches": 82.7143
},
"rates": {
"ERA": 4.7647,
"WHIP": 1.8529,
"ER_per_IP": 0.52941,
"H_per_IP": 1.38235,
"BB_per_IP": 0.47059,
"SO_per_IP": 1.02941,
"HR_per_IP": 0.08824
}
},
"season": {
"games": 7,
"totals": {
"IP": 34.0,
"ER": 18.0,
"R": 21.0,
"H": 47.0,
"BB": 16.0,
"SO": 35.0,
"HR": 3.0,
"BF": 160.0,
"Pitches": 579.0
},
"per_game": {
"IP": 5.0,
"ER": 2.5714,
"R": 3.0,
"H": 6.7143,
"BB": 2.2857,
"SO": 5.0,
"HR": 0.4286,
"BF": 22.8571,
"Pitches": 82.7143
},
"rates": {
"ERA": 4.7647,
"WHIP": 1.8529,
"ER_per_IP": 0.52941,
"H_per_IP": 1.38235,
"BB_per_IP": 0.47059,
"SO_per_IP": 1.02941,
"HR_per_IP": 0.08824
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.585,
"predicted_H": 5.964,
"predicted_BB": 2.351,
"predicted_SO": 4.948,
"predicted_HR": 0.55,
"predicted_ERA": 4.6534,
"predicted_WHIP": 1.6631
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5261,
"form_weight": 0.4739,
"form_reliability": 0.5833,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.585,
"final": 2.8033,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.964,
"final": 5.9829,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.351,
"final": 1.6403,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.948,
"final": 6.0275,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.55,
"final": 0.2607,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.6534,
"final": 4.6534,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.6631,
"final": 1.6631,
"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": 34.0,
"ER": 18,
"H": 47,
"BB": 16,
"SO": 35,
"HR": 3,
"ERA": 4.764705882352941,
"WHIP": 1.8529411764705883,
"K9": 9.264705882352942,
"HR9": 0.7941176470588235,
"games_pitched": 7,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 7,
"error_prone": false
},
"games_count": 7,
"latest_game_date": "2026-08-16T00:00:00"
},
"recent_form_boost": 1.0531411822397463,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
}
},
{
"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": 7,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663776",
"player_name": "Patrick Sandoval",
"position": "Starter",
"team": "BOS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_H",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 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": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_H",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BOS",
"games": 128,
"wins": 69,
"losses": 59,
"win_pct": 0.5391,
"runs_scored": 581.0,
"runs_allowed": 484.0,
"run_differential": 97.0,
"run_differential_per_game": 0.7578,
"avg_runs_scored": 4.5391,
"avg_runs_allowed": 3.7812,
"offense_index": 1.0163,
"defense_index": 1.1812,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 4.3,
"run_differential": 14.0
},
"available": true,
"quality_score": 0.1266
},
"opponent": {
"team": "SF",
"games": 128,
"wins": 52,
"losses": 76,
"win_pct": 0.4062,
"runs_scored": 517.0,
"runs_allowed": 595.0,
"run_differential": -78.0,
"run_differential_per_game": -0.6094,
"avg_runs_scored": 4.0391,
"avg_runs_allowed": 4.6484,
"offense_index": 0.9043,
"defense_index": 0.9608,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.2,
"avg_runs_allowed": 4.7,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.2248
},
"edges": {
"quality_edge": 0.3514,
"offense_edge": 0.0163,
"opponent_offense_edge": -0.0957,
"defense_strength": 0.1812,
"opponent_defense_weakness": 0.0392,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0233,
"run_prevention": 0.949,
"strikeout": 1.0182
},
"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": 135.0,
"k_percent": 21.9,
"bb_percent": 10.0,
"woba": 0.383,
"xwoba": 0.334,
"sweet_spot_percent": 36.1,
"barrel_batted_rate": 5.6,
"hard_hit_percent": 32.4,
"avg_best_speed": 75.7236,
"avg_hyper_speed": 93.1779,
"whiff_percent": 25.5,
"swing_percent": 47.3
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.4364,
"command_and_miss": -0.0593,
"regression_edge": 1.4,
"xwoba_edge": -0.6571,
"barrel_edge": 0.3333,
"hard_hit_edge": 0.7571,
"whiff_edge": 0.0143,
"bb_edge": -0.225,
"pitch_design_score": -0.0816
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663776",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 85,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 85,
"pitch_usage": 0.0,
"release_speed": 88.46294741055159,
"release_spin_rate": 2188.7206510923947,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 85,
"pitch_usage": 0.0,
"release_speed": 88.46294741055159,
"release_spin_rate": 2188.7206510923947,
"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.4629,
"release_spin_rate": 2188.7207,
"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.0816,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5828,
"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.0682,
"sample_weight": 0.54,
"run_prevention_factor": 1.0058,
"strikeout_factor": 0.9994,
"walk_factor": 1.0097,
"homer_factor": 0.9799,
"woba_minus_xwoba": 0.049,
"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": 673,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 673,
"gp_value": 7.0,
"gp_rank": 555,
"gs_value": 7.0,
"gs_rank": 187,
"qs_value": 1.0,
"qs_rank": 172,
"era_value": 4.7647,
"era_rank": null,
"w_value": 1.0,
"w_rank": 383,
"l_value": 2.0,
"l_rank": 295,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 34.0,
"ip_rank": 379,
"h_value": 47.0,
"h_rank": 223,
"er_value": 18.0,
"er_rank": 317,
"hr_value": 3.0,
"hr_rank": 404,
"bb_value": 16.0,
"bb_rank": 330,
"k_value": 35.0,
"k_rank": 354,
"k_per_9_value": 9.264707,
"k_per_9_rank": 25,
"whip_value": 1.8529,
"whip_rank": null,
"war_value": -0.29,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0031,
"adjusted": 3
},
"predicted_H": {
"original": 7.0,
"factor": 1.0031,
"adjusted": 7
},
"predicted_BB": {
"original": 3.0,
"factor": 1.0052,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9891,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9997,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 7,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 89,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 7 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260822_SF@BOS.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"
}
} |
| 20260822 | 20260822_STL@PHI | away | Quinn Mathews | Quinn Mathews | True | 4.2 | 5.0 | 1 | 2 | 7 | 5 | 2/10 | 1/1 | 7/3 | Last 10 before this game (2 available){
"model_context": {
"embedded_season": {
"ERA": 3.0,
"WHIP": 1.5555555555555556,
"IP": 9.0,
"games_started": null,
"games_pitched": 2,
"role_avg_IP": 4.5,
"recent_avg_IP": 4.5,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.25,
"sample_weight": 0.45,
"run_prevention_factor": 0.9788,
"strikeout_factor": 1.0113,
"walk_factor": 1.0495,
"homer_factor": 0.9253,
"regression_flag": "positive_pitcher_regression",
"k_percent": 24.4,
"bb_percent": 14.6,
"woba": 0.313,
"xwoba": 0.273,
"barrel_percent": 4.0,
"hard_hit_percent": 24.0,
"whiff_percent": 27.6
},
"espn_rank": {
"rank": 331,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 2.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2857,
"prior_weight": 0.7143
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "687273",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 2,
"reference_playing_time": 4.0,
"windows": {
"last_5": {
"games": 2,
"totals": {
"IP": 9.0,
"ER": 3.0,
"R": 3.0,
"H": 8.0,
"BB": 6.0,
"SO": 10.0,
"HR": 1.0,
"BF": 41.0,
"Pitches": 192.0
},
"per_game": {
"IP": 4.2,
"ER": 1.5,
"R": 1.5,
"H": 4.0,
"BB": 3.0,
"SO": 5.0,
"HR": 0.5,
"BF": 20.5,
"Pitches": 96.0
},
"rates": {
"ERA": 3.0,
"WHIP": 1.5556,
"ER_per_IP": 0.33333,
"H_per_IP": 0.88889,
"BB_per_IP": 0.66667,
"SO_per_IP": 1.11111,
"HR_per_IP": 0.11111
}
},
"last_10": {
"games": 2,
"totals": {
"IP": 9.0,
"ER": 3.0,
"R": 3.0,
"H": 8.0,
"BB": 6.0,
"SO": 10.0,
"HR": 1.0,
"BF": 41.0,
"Pitches": 192.0
},
"per_game": {
"IP": 4.2,
"ER": 1.5,
"R": 1.5,
"H": 4.0,
"BB": 3.0,
"SO": 5.0,
"HR": 0.5,
"BF": 20.5,
"Pitches": 96.0
},
"rates": {
"ERA": 3.0,
"WHIP": 1.5556,
"ER_per_IP": 0.33333,
"H_per_IP": 0.88889,
"BB_per_IP": 0.66667,
"SO_per_IP": 1.11111,
"HR_per_IP": 0.11111
}
},
"season": {
"games": 2,
"totals": {
"IP": 9.0,
"ER": 3.0,
"R": 3.0,
"H": 8.0,
"BB": 6.0,
"SO": 10.0,
"HR": 1.0,
"BF": 41.0,
"Pitches": 192.0
},
"per_game": {
"IP": 4.2,
"ER": 1.5,
"R": 1.5,
"H": 4.0,
"BB": 3.0,
"SO": 5.0,
"HR": 0.5,
"BF": 20.5,
"Pitches": 96.0
},
"rates": {
"ERA": 3.0,
"WHIP": 1.5556,
"ER_per_IP": 0.33333,
"H_per_IP": 0.88889,
"BB_per_IP": 0.66667,
"SO_per_IP": 1.11111,
"HR_per_IP": 0.11111
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 1.902,
"predicted_H": 3.983,
"predicted_BB": 1.894,
"predicted_SO": 4.176,
"predicted_HR": 0.576,
"predicted_ERA": 4.086,
"predicted_WHIP": 1.4026
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.6518,
"form_weight": 0.3482,
"form_reliability": 0.2857,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 2.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2857,
"prior_weight": 0.7143
},
"applied_metrics": {
"predicted_IP": {
"model": 4.0,
"form": 4.1,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.902,
"final": 1.9659,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 3.983,
"final": 2.6905,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.894,
"final": 1.3113,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.176,
"final": 6.0167,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.576,
"final": 0.2006,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.086,
"final": 4.086,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4026,
"final": 1.4026,
"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": 9.0,
"ER": 3,
"H": 8,
"BB": 6,
"SO": 10,
"HR": 1,
"ERA": 3.0,
"WHIP": 1.5555555555555556,
"K9": 10.0,
"HR9": 1.0,
"games_pitched": 2,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 2,
"error_prone": false
},
"games_count": 2,
"latest_game_date": "2026-08-17T00:00:00"
},
"recent_form_boost": 0.9551129011341117,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 1.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 2.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2857,
"prior_weight": 0.7143
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 2,
"predicted_H": 2,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "687273",
"player_name": "Quinn Mathews",
"position": "Starter",
"team": "STL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 4.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": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.0,
"after": 4.2,
"delta": 0.2,
"percent_delta": 0.05,
"direction": "boost",
"projection_effect": "better",
"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": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 4.0,
"after": 4.2,
"delta": 0.2,
"percent_delta": 0.05,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.0,
"after": 4.2,
"delta": 0.2,
"percent_delta": 0.05,
"direction": "boost",
"projection_effect": "better",
"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": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 4.0,
"after": 4.2,
"delta": 0.2,
"percent_delta": 0.05,
"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": "STL",
"games": 130,
"wins": 66,
"losses": 64,
"win_pct": 0.5077,
"runs_scored": 578.0,
"runs_allowed": 569.0,
"run_differential": 9.0,
"run_differential_per_game": 0.0692,
"avg_runs_scored": 4.4462,
"avg_runs_allowed": 4.3769,
"offense_index": 0.9942,
"defense_index": 1.0218,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 4.0,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.0501
},
"opponent": {
"team": "PHI",
"games": 129,
"wins": 71,
"losses": 58,
"win_pct": 0.5504,
"runs_scored": 581.0,
"runs_allowed": 565.0,
"run_differential": 16.0,
"run_differential_per_game": 0.124,
"avg_runs_scored": 4.5039,
"avg_runs_allowed": 4.3798,
"offense_index": 1.0071,
"defense_index": 1.0211,
"current_streak": "W7",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 3.7,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.1631
},
"edges": {
"quality_edge": -0.113,
"offense_edge": -0.0058,
"opponent_offense_edge": 0.0071,
"defense_strength": 0.0218,
"opponent_defense_weakness": -0.0211,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9959,
"run_prevention": 1.0046,
"strikeout": 0.996
},
"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": 24.0,
"k_percent": 24.4,
"bb_percent": 14.6,
"woba": 0.313,
"xwoba": 0.273,
"sweet_spot_percent": 32.0,
"barrel_batted_rate": 4.0,
"hard_hit_percent": 24.0,
"avg_best_speed": 74.5309,
"avg_hyper_speed": 92.3386,
"whiff_percent": 27.6,
"swing_percent": 45.3
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.8134,
"command_and_miss": -0.0236,
"regression_edge": 1.1429,
"xwoba_edge": 1.0857,
"barrel_edge": 0.6889,
"hard_hit_edge": 1.9571,
"whiff_edge": 0.3143,
"bb_edge": -1.375,
"pitch_design_score": -0.1019
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687273",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 97,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 88.10103092783504,
"release_spin_rate": 2106.8865979381444,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 88.10103092783504,
"release_spin_rate": 2106.8865979381444,
"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.101,
"release_spin_rate": 2106.8866,
"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.1019,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.7276,
"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.25,
"sample_weight": 0.45,
"run_prevention_factor": 0.9788,
"strikeout_factor": 1.0113,
"walk_factor": 1.0495,
"homer_factor": 0.9253,
"woba_minus_xwoba": 0.04,
"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": 331,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 331,
"gp_value": 2.0,
"gp_rank": 715,
"gs_value": 2.0,
"gs_rank": 262,
"qs_value": 0.0,
"qs_rank": 203,
"era_value": 3.0,
"era_rank": null,
"w_value": 0.0,
"w_rank": 498,
"l_value": 1.0,
"l_rank": 393,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 9.0,
"ip_rank": 600,
"h_value": 8.0,
"h_rank": 628,
"er_value": 3.0,
"er_rank": 673,
"hr_value": 1.0,
"hr_rank": 578,
"bb_value": 6.0,
"bb_rank": 545,
"k_value": 10.0,
"k_rank": 555,
"k_per_9_value": 10.0,
"k_per_9_rank": 24,
"whip_value": 1.5555,
"whip_rank": null,
"war_value": 0.19,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9905,
"adjusted": 1
},
"predicted_H": {
"original": 4.0,
"factor": 0.9905,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.0223,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9664,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0051,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 17,
"Pitches": 96,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 2 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "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 8",
"detail": "Actual minus predicted hits was +8."
}
],
"provenance": {
"prediction": "output/games/20260822_STL@PHI.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"
}
} |
| 20260822 | 20260822_STL@PHI | home | Andrew Painter | Andrew Painter | True | 4.1 | 7.0 | 8 | 4 | 1 | -3 | 5/5 | 3/0 | 3/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 6.43359375,
"WHIP": 1.546875,
"IP": 85.1,
"games_started": null,
"games_pitched": 18,
"role_avg_IP": 4.708,
"recent_avg_IP": 4.467,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3274,
"sample_weight": 1.0,
"run_prevention_factor": 1.0278,
"strikeout_factor": 0.9646,
"walk_factor": 0.996,
"homer_factor": 1.0388,
"regression_flag": "neutral",
"k_percent": 18.5,
"bb_percent": 8.9,
"woba": 0.369,
"xwoba": 0.344,
"barrel_percent": 8.4,
"hard_hit_percent": 35.5,
"whiff_percent": 22.9
},
"espn_rank": {
"rank": 661,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "691725",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 18,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.1,
"ER": 16.0,
"R": 16.0,
"H": 20.0,
"BB": 12.0,
"SO": 21.0,
"HR": 5.0,
"BF": 98.0,
"Pitches": 388.0
},
"per_game": {
"IP": 4.1,
"ER": 3.2,
"R": 3.2,
"H": 4.0,
"BB": 2.4,
"SO": 4.2,
"HR": 1.0,
"BF": 19.6,
"Pitches": 77.6
},
"rates": {
"ERA": 6.4478,
"WHIP": 1.4328,
"ER_per_IP": 0.71642,
"H_per_IP": 0.89552,
"BB_per_IP": 0.53731,
"SO_per_IP": 0.9403,
"HR_per_IP": 0.22388
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.2,
"ER": 35.0,
"R": 35.0,
"H": 50.0,
"BB": 22.0,
"SO": 37.0,
"HR": 10.0,
"BF": 211.0,
"Pitches": 790.0
},
"per_game": {
"IP": 4.2,
"ER": 3.5,
"R": 3.5,
"H": 5.0,
"BB": 2.2,
"SO": 3.7,
"HR": 1.0,
"BF": 21.1,
"Pitches": 79.0
},
"rates": {
"ERA": 6.6084,
"WHIP": 1.5105,
"ER_per_IP": 0.73427,
"H_per_IP": 1.04895,
"BB_per_IP": 0.46154,
"SO_per_IP": 0.77622,
"HR_per_IP": 0.20979
}
},
"season": {
"games": 18,
"totals": {
"IP": 85.1,
"ER": 61.0,
"R": 61.0,
"H": 98.0,
"BB": 34.0,
"SO": 71.0,
"HR": 17.0,
"BF": 383.0,
"Pitches": 1473.0
},
"per_game": {
"IP": 4.2,
"ER": 3.3889,
"R": 3.3889,
"H": 5.4444,
"BB": 1.8889,
"SO": 3.9444,
"HR": 0.9444,
"BF": 21.2778,
"Pitches": 81.8333
},
"rates": {
"ERA": 6.4336,
"WHIP": 1.5469,
"ER_per_IP": 0.71484,
"H_per_IP": 1.14844,
"BB_per_IP": 0.39844,
"SO_per_IP": 0.83203,
"HR_per_IP": 0.19922
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 3.069,
"predicted_H": 4.524,
"predicted_BB": 2.082,
"predicted_SO": 4.007,
"predicted_HR": 0.908,
"predicted_ERA": 6.0706,
"predicted_WHIP": 1.4521
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4419,
"form_weight": 0.5581,
"form_reliability": 0.7826,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 3.069,
"final": 2.5967,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.524,
"final": 4.2925,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.082,
"final": 2.4876,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.007,
"final": 3.5621,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.908,
"final": 0.5068,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.0706,
"final": 6.0706,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4521,
"final": 1.4521,
"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": 35,
"H": 50,
"BB": 22,
"SO": 37,
"HR": 10,
"ERA": 6.608391608391608,
"WHIP": 1.5104895104895106,
"K9": 6.986013986013987,
"HR9": 1.8881118881118881,
"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-16T00:00:00"
},
"recent_form_boost": 1.2519945347695693,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
}
},
{
"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": 3,
"predicted_SO": 3,
"predicted_HR": 0
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 4,
"predicted_H": 5,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 0
}
}
],
"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": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.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": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.1,
"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": 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.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"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": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 4.1,
"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": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 2,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 4.1,
"predicted_R": 4.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": 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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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": 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": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"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": 3,
"boosted_metrics": 2,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 3,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 4.0,
"delta": 2.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PHI",
"games": 129,
"wins": 71,
"losses": 58,
"win_pct": 0.5504,
"runs_scored": 581.0,
"runs_allowed": 565.0,
"run_differential": 16.0,
"run_differential_per_game": 0.124,
"avg_runs_scored": 4.5039,
"avg_runs_allowed": 4.3798,
"offense_index": 1.0071,
"defense_index": 1.0211,
"current_streak": "W7",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 3.7,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.1631
},
"opponent": {
"team": "STL",
"games": 130,
"wins": 66,
"losses": 64,
"win_pct": 0.5077,
"runs_scored": 578.0,
"runs_allowed": 569.0,
"run_differential": 9.0,
"run_differential_per_game": 0.0692,
"avg_runs_scored": 4.4462,
"avg_runs_allowed": 4.3769,
"offense_index": 0.9942,
"defense_index": 1.0218,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 4.0,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.0501
},
"edges": {
"quality_edge": 0.113,
"offense_edge": 0.0071,
"opponent_offense_edge": -0.0058,
"defense_strength": 0.0211,
"opponent_defense_weakness": -0.0218,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0054,
"run_prevention": 0.9913,
"strikeout": 1.0039
},
"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": 357.0,
"k_percent": 18.5,
"bb_percent": 8.9,
"woba": 0.369,
"xwoba": 0.344,
"sweet_spot_percent": 30.4,
"barrel_batted_rate": 8.4,
"hard_hit_percent": 35.5,
"avg_best_speed": 75.5421,
"avg_hyper_speed": 93.6631,
"whiff_percent": 22.9,
"swing_percent": 48.1
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.5508,
"command_and_miss": -0.3529,
"regression_edge": 0.7143,
"xwoba_edge": -0.9429,
"barrel_edge": -0.2889,
"hard_hit_edge": 0.3143,
"whiff_edge": -0.3571,
"bb_edge": 0.05,
"pitch_design_score": 0.0171
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "691725",
"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": 90.22481677567575,
"release_spin_rate": 2288.247030541709,
"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": 90.22481677567575,
"release_spin_rate": 2288.247030541709,
"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.2248,
"release_spin_rate": 2288.247,
"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.0171,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.1219,
"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.3274,
"sample_weight": 1.0,
"run_prevention_factor": 1.0278,
"strikeout_factor": 0.9646,
"walk_factor": 0.996,
"homer_factor": 1.0388,
"woba_minus_xwoba": 0.025,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "691725",
"espn_id": 4872683,
"player_name": "Andrew Painter",
"team": "PHI",
"role": "pitcher",
"espn_rank": 661,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 661,
"gp_value": 18.0,
"gp_rank": 381,
"gs_value": 16.0,
"gs_rank": 114,
"qs_value": 3.0,
"qs_rank": 131,
"era_value": 6.4335,
"era_rank": null,
"w_value": 2.0,
"w_rank": 287,
"l_value": 8.0,
"l_rank": 34,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 85.1,
"ip_rank": 132,
"h_value": 98.0,
"h_rank": 97,
"er_value": 61.0,
"er_rank": 37,
"hr_value": 17.0,
"hr_rank": 48,
"bb_value": 34.0,
"bb_rank": 103,
"k_value": 71.0,
"k_rank": 155,
"k_per_9_value": 7.4882812,
"k_per_9_rank": 31,
"whip_value": 1.5468,
"whip_rank": null,
"war_value": -0.24,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0278,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0278,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.996,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0388,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9646,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 5,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 90,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +8 outs from the projected workload."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260822_STL@PHI.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"
}
} |
| 20260822 | 20260822_TB@BAL | away | Shane McClanahan | Shane McClanahan | True | 5.0 | 5.0 | 0 | 3 | 0 | -3 | 4/4 | 2/1 | 5/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.254071661237785,
"WHIP": 1.1237785016286646,
"IP": 102.1,
"games_started": null,
"games_pitched": 21,
"role_avg_IP": 4.873,
"recent_avg_IP": 4.533,
"last_start_IP": 3.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0685,
"sample_weight": 1.0,
"run_prevention_factor": 1.0058,
"strikeout_factor": 1.0086,
"walk_factor": 0.984,
"homer_factor": 1.0536,
"regression_flag": "negative_pitcher_regression",
"k_percent": 22.2,
"bb_percent": 8.3,
"woba": 0.272,
"xwoba": 0.315,
"barrel_percent": 8.7,
"hard_hit_percent": 41.5,
"whiff_percent": 26.9
},
"espn_rank": {
"rank": 123,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 102.1,
"season_ERA": 3.254,
"season_WHIP": 1.124,
"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": 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": "663556",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 21,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.2,
"ER": 10.0,
"R": 11.0,
"H": 15.0,
"BB": 7.0,
"SO": 17.0,
"HR": 2.0,
"BF": 91.0,
"Pitches": 349.0
},
"per_game": {
"IP": 4.2,
"ER": 2.0,
"R": 2.2,
"H": 3.0,
"BB": 1.4,
"SO": 3.4,
"HR": 0.4,
"BF": 18.2,
"Pitches": 69.8
},
"rates": {
"ERA": 3.9706,
"WHIP": 0.9706,
"ER_per_IP": 0.44118,
"H_per_IP": 0.66176,
"BB_per_IP": 0.30882,
"SO_per_IP": 0.75,
"HR_per_IP": 0.08824
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.1,
"ER": 22.0,
"R": 27.0,
"H": 43.0,
"BB": 16.0,
"SO": 41.0,
"HR": 6.0,
"BF": 201.0,
"Pitches": 731.0
},
"per_game": {
"IP": 4.2,
"ER": 2.2,
"R": 2.7,
"H": 4.3,
"BB": 1.6,
"SO": 4.1,
"HR": 0.6,
"BF": 20.1,
"Pitches": 73.1
},
"rates": {
"ERA": 4.1831,
"WHIP": 1.2465,
"ER_per_IP": 0.46479,
"H_per_IP": 0.90845,
"BB_per_IP": 0.33803,
"SO_per_IP": 0.8662,
"HR_per_IP": 0.12676
}
},
"season": {
"games": 21,
"totals": {
"IP": 102.1,
"ER": 37.0,
"R": 44.0,
"H": 80.0,
"BB": 35.0,
"SO": 94.0,
"HR": 8.0,
"BF": 423.0,
"Pitches": 1604.0
},
"per_game": {
"IP": 5.0,
"ER": 1.7619,
"R": 2.0952,
"H": 3.8095,
"BB": 1.6667,
"SO": 4.4762,
"HR": 0.381,
"BF": 20.1429,
"Pitches": 76.381
},
"rates": {
"ERA": 3.2541,
"WHIP": 1.1238,
"ER_per_IP": 0.36156,
"H_per_IP": 0.78176,
"BB_per_IP": 0.34202,
"SO_per_IP": 0.91857,
"HR_per_IP": 0.07818
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.137,
"predicted_H": 3.881,
"predicted_BB": 1.596,
"predicted_SO": 4.061,
"predicted_HR": 0.522,
"predicted_ERA": 4.0207,
"predicted_WHIP": 1.1446
}
},
"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.0,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.137,
"final": 2.5092,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.881,
"final": 3.9323,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.596,
"final": 1.7702,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.061,
"final": 4.4659,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.522,
"final": 0.2969,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.0207,
"final": 4.0207,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1446,
"final": 1.1446,
"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": 22,
"H": 43,
"BB": 16,
"SO": 41,
"HR": 6,
"ERA": 4.183098591549296,
"WHIP": 1.2464788732394365,
"K9": 7.795774647887324,
"HR9": 1.1408450704225352,
"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-17T00:00:00"
},
"recent_form_boost": 0.9725488044435575,
"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": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
}
}
],
"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": 2.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": "TB",
"games": 128,
"wins": 76,
"losses": 52,
"win_pct": 0.5938,
"runs_scored": 582.0,
"runs_allowed": 539.0,
"run_differential": 43.0,
"run_differential_per_game": 0.3359,
"avg_runs_scored": 4.5469,
"avg_runs_allowed": 4.2109,
"offense_index": 1.018,
"defense_index": 1.0606,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 6.0,
"run_differential": -7.0
},
"available": true,
"quality_score": 0.0861
},
"opponent": {
"team": "BAL",
"games": 129,
"wins": 62,
"losses": 67,
"win_pct": 0.4806,
"runs_scored": 579.0,
"runs_allowed": 613.0,
"run_differential": -34.0,
"run_differential_per_game": -0.2636,
"avg_runs_scored": 4.4884,
"avg_runs_allowed": 4.7519,
"offense_index": 1.0049,
"defense_index": 0.9399,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.3,
"run_differential": 3.0
},
"available": true,
"quality_score": -0.049
},
"edges": {
"quality_edge": 0.1351,
"offense_edge": 0.018,
"opponent_offense_edge": 0.0049,
"defense_strength": 0.0606,
"opponent_defense_weakness": 0.0601,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.007,
"run_prevention": 0.988,
"strikeout": 1.0037
},
"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": 407.0,
"k_percent": 22.2,
"bb_percent": 8.3,
"woba": 0.272,
"xwoba": 0.315,
"sweet_spot_percent": 32.2,
"barrel_batted_rate": 8.7,
"hard_hit_percent": 41.5,
"avg_best_speed": 78.4276,
"avg_hyper_speed": 94.5552,
"whiff_percent": 26.9,
"swing_percent": 48.4
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.0454,
"command_and_miss": 0.115,
"regression_edge": -1.2286,
"xwoba_edge": -0.1143,
"barrel_edge": -0.3556,
"hard_hit_edge": -0.5429,
"whiff_edge": 0.2143,
"bb_edge": 0.2,
"pitch_design_score": -0.0127
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663556",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 72,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 72,
"pitch_usage": 0.0,
"release_speed": 89.69374543668859,
"release_spin_rate": 2097.702326108769,
"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": 72,
"pitch_usage": 0.0,
"release_speed": 89.69374543668859,
"release_spin_rate": 2097.702326108769,
"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.6937,
"release_spin_rate": 2097.7023,
"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.0127,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0905,
"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.0685,
"sample_weight": 1.0,
"run_prevention_factor": 1.0058,
"strikeout_factor": 1.0086,
"walk_factor": 0.984,
"homer_factor": 1.0536,
"woba_minus_xwoba": -0.043,
"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": 123,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 123,
"gp_value": 21.0,
"gp_rank": 342,
"gs_value": 21.0,
"gs_rank": 77,
"qs_value": 4.0,
"qs_rank": 116,
"era_value": 3.254,
"era_rank": null,
"w_value": 9.0,
"w_rank": 28,
"l_value": 6.0,
"l_rank": 94,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 102.1,
"ip_rank": 100,
"h_value": 80.0,
"h_rank": 131,
"er_value": 37.0,
"er_rank": 140,
"hr_value": 8.0,
"hr_rank": 185,
"bb_value": 35.0,
"bb_rank": 91,
"k_value": 94.0,
"k_rank": 97,
"k_per_9_value": 8.267101,
"k_per_9_rank": 26,
"whip_value": 1.1237,
"whip_rank": null,
"war_value": 1.3,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0058,
"adjusted": 2
},
"predicted_H": {
"original": 3.0,
"factor": 1.0058,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 0.984,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0536,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0086,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 85,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
}
],
"provenance": {
"prediction": "output/games/20260822_TB@BAL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_TB@BAL | home | Brandon Young | Brandon Young | True | 5.1 | 5.2 | 1 | 0 | 2 | 2 | 0/6 | 5/3 | 8/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.5184135977337108,
"WHIP": 1.3512747875354107,
"IP": 117.2,
"games_started": null,
"games_pitched": 21,
"role_avg_IP": 5.603,
"recent_avg_IP": 5.267,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2112,
"sample_weight": 1.0,
"run_prevention_factor": 1.018,
"strikeout_factor": 0.9697,
"walk_factor": 0.984,
"homer_factor": 1.0262,
"regression_flag": "neutral",
"k_percent": 18.9,
"bb_percent": 8.3,
"woba": 0.319,
"xwoba": 0.323,
"barrel_percent": 6.9,
"hard_hit_percent": 41.1,
"whiff_percent": 23.4
},
"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": 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": "687064",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 21,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.1,
"ER": 13.0,
"R": 14.0,
"H": 29.0,
"BB": 10.0,
"SO": 22.0,
"HR": 6.0,
"BF": 117.0,
"Pitches": 472.0
},
"per_game": {
"IP": 5.1,
"ER": 2.6,
"R": 2.8,
"H": 5.8,
"BB": 2.0,
"SO": 4.4,
"HR": 1.2,
"BF": 23.4,
"Pitches": 94.4
},
"rates": {
"ERA": 4.443,
"WHIP": 1.481,
"ER_per_IP": 0.49367,
"H_per_IP": 1.10127,
"BB_per_IP": 0.37975,
"SO_per_IP": 0.83544,
"HR_per_IP": 0.22785
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.1,
"ER": 24.0,
"R": 25.0,
"H": 62.0,
"BB": 19.0,
"SO": 52.0,
"HR": 9.0,
"BF": 242.0,
"Pitches": 942.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.5,
"H": 6.2,
"BB": 1.9,
"SO": 5.2,
"HR": 0.9,
"BF": 24.2,
"Pitches": 94.2
},
"rates": {
"ERA": 3.9036,
"WHIP": 1.4639,
"ER_per_IP": 0.43373,
"H_per_IP": 1.12048,
"BB_per_IP": 0.34337,
"SO_per_IP": 0.93976,
"HR_per_IP": 0.16265
}
},
"season": {
"games": 21,
"totals": {
"IP": 117.2,
"ER": 46.0,
"R": 55.0,
"H": 117.0,
"BB": 42.0,
"SO": 96.0,
"HR": 15.0,
"BF": 507.0,
"Pitches": 1899.0
},
"per_game": {
"IP": 5.2,
"ER": 2.1905,
"R": 2.619,
"H": 5.5714,
"BB": 2.0,
"SO": 4.5714,
"HR": 0.7143,
"BF": 24.1429,
"Pitches": 90.4286
},
"rates": {
"ERA": 3.5184,
"WHIP": 1.3513,
"ER_per_IP": 0.39093,
"H_per_IP": 0.99433,
"BB_per_IP": 0.35694,
"SO_per_IP": 0.81586,
"HR_per_IP": 0.12748
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.531,
"predicted_H": 5.839,
"predicted_BB": 1.991,
"predicted_SO": 4.845,
"predicted_HR": 0.975,
"predicted_ERA": 4.156,
"predicted_WHIP": 1.4284
}
},
"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": 0.0,
"form": 2.531,
"final": 1.4395,
"source": "model_form_blend"
},
"predicted_H": {
"model": 0.0,
"form": 5.839,
"final": 3.321,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 5.0,
"form": 1.991,
"final": 3.2886,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 4.845,
"final": 6.2056,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.975,
"final": 0.5545,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.156,
"final": 4.156,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4284,
"final": 1.4284,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.1,
"ER": 24,
"H": 62,
"BB": 19,
"SO": 52,
"HR": 9,
"ERA": 3.9036144578313254,
"WHIP": 1.4638554216867472,
"K9": 8.457831325301205,
"HR9": 1.4638554216867472,
"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-17T00:00:00"
},
"recent_form_boost": 0.9465412531114686,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_BB": 5.0,
"predicted_SO": 8.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
}
}
],
"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": 5.0,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_R": 0.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.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": 129,
"wins": 62,
"losses": 67,
"win_pct": 0.4806,
"runs_scored": 579.0,
"runs_allowed": 613.0,
"run_differential": -34.0,
"run_differential_per_game": -0.2636,
"avg_runs_scored": 4.4884,
"avg_runs_allowed": 4.7519,
"offense_index": 1.0049,
"defense_index": 0.9399,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.3,
"run_differential": 3.0
},
"available": true,
"quality_score": -0.049
},
"opponent": {
"team": "TB",
"games": 128,
"wins": 76,
"losses": 52,
"win_pct": 0.5938,
"runs_scored": 582.0,
"runs_allowed": 539.0,
"run_differential": 43.0,
"run_differential_per_game": 0.3359,
"avg_runs_scored": 4.5469,
"avg_runs_allowed": 4.2109,
"offense_index": 1.018,
"defense_index": 1.0606,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 6.0,
"run_differential": -7.0
},
"available": true,
"quality_score": 0.0861
},
"edges": {
"quality_edge": -0.1351,
"offense_edge": 0.0049,
"opponent_offense_edge": 0.018,
"defense_strength": -0.0601,
"opponent_defense_weakness": -0.0606,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9921,
"run_prevention": 1.0156,
"strikeout": 0.9945
},
"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": 483.0,
"k_percent": 18.9,
"bb_percent": 8.3,
"woba": 0.319,
"xwoba": 0.323,
"sweet_spot_percent": 34.2,
"barrel_batted_rate": 6.9,
"hard_hit_percent": 41.1,
"avg_best_speed": 78.5868,
"avg_hyper_speed": 94.345,
"whiff_percent": 23.4,
"swing_percent": 49.9
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.2193,
"command_and_miss": -0.2721,
"regression_edge": -0.1143,
"xwoba_edge": -0.3429,
"barrel_edge": 0.0444,
"hard_hit_edge": -0.4857,
"whiff_edge": -0.2857,
"bb_edge": 0.2,
"pitch_design_score": -0.0781
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687064",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 97,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 88.5261158710706,
"release_spin_rate": 2051.628566831421,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 88.5261158710706,
"release_spin_rate": 2051.628566831421,
"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.5261,
"release_spin_rate": 2051.6286,
"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.0781,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5576,
"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.2112,
"sample_weight": 1.0,
"run_prevention_factor": 1.018,
"strikeout_factor": 0.9697,
"walk_factor": 0.984,
"homer_factor": 1.0262,
"woba_minus_xwoba": -0.004,
"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": 821,
"metrics": {
"espn_rank": 87,
"gp_value": 21.0,
"gp_rank": 342,
"gs_value": 21.0,
"gs_rank": 77,
"qs_value": 10.0,
"qs_rank": 48,
"era_value": 3.5184,
"era_rank": null,
"w_value": 9.0,
"w_rank": 28,
"l_value": 3.0,
"l_rank": 214,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 117.2,
"ip_rank": 79,
"h_value": 117.0,
"h_rank": 61,
"er_value": 46.0,
"er_rank": 100,
"hr_value": 15.0,
"hr_rank": 66,
"bb_value": 42.0,
"bb_rank": 50,
"k_value": 96.0,
"k_rank": 92,
"k_per_9_value": 7.3427763,
"k_per_9_rank": 31,
"whip_value": 1.3512,
"whip_rank": null,
"war_value": 1.72,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.018,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 1.018,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.984,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0262,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9697,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 0,
"predicted_R": 0,
"predicted_ER": 0,
"predicted_BB": 5,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"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": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 6",
"detail": "Actual minus predicted hits was +6."
}
],
"provenance": {
"prediction": "output/games/20260822_TB@BAL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260822 | 20260822_TOR@NYY | away | Dylan Cease | Dylan Cease | True | 6.1 | 6.2 | 1 | 3 | 1 | -2 | 4/2 | 3/5 | 4/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.4188861985472156,
"WHIP": 1.0605326876513317,
"IP": 137.2,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 5.986,
"recent_avg_IP": 6.667,
"last_start_IP": 6.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 1.009,
"sample_weight": 1.0,
"run_prevention_factor": 0.9142,
"strikeout_factor": 1.1343,
"walk_factor": 1.032,
"homer_factor": 0.8817,
"regression_flag": "neutral",
"k_percent": 36.3,
"bb_percent": 10.7,
"woba": 0.248,
"xwoba": 0.254,
"barrel_percent": 4.9,
"hard_hit_percent": 32.4,
"whiff_percent": 34.8
},
"espn_rank": {
"rank": 5,
"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": "656302",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 33.1,
"ER": 6.0,
"R": 6.0,
"H": 13.0,
"BB": 14.0,
"SO": 46.0,
"HR": 2.0,
"BF": 126.0,
"Pitches": 528.0
},
"per_game": {
"IP": 6.2,
"ER": 1.2,
"R": 1.2,
"H": 2.6,
"BB": 2.8,
"SO": 9.2,
"HR": 0.4,
"BF": 25.2,
"Pitches": 105.6
},
"rates": {
"ERA": 1.62,
"WHIP": 0.81,
"ER_per_IP": 0.18,
"H_per_IP": 0.39,
"BB_per_IP": 0.42,
"SO_per_IP": 1.38,
"HR_per_IP": 0.06
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 64.2,
"ER": 15.0,
"R": 17.0,
"H": 31.0,
"BB": 28.0,
"SO": 91.0,
"HR": 4.0,
"BF": 250.0,
"Pitches": 1066.0
},
"per_game": {
"IP": 6.1,
"ER": 1.5,
"R": 1.7,
"H": 3.1,
"BB": 2.8,
"SO": 9.1,
"HR": 0.4,
"BF": 25.0,
"Pitches": 106.6
},
"rates": {
"ERA": 2.0876,
"WHIP": 0.9124,
"ER_per_IP": 0.23196,
"H_per_IP": 0.47938,
"BB_per_IP": 0.43299,
"SO_per_IP": 1.40722,
"HR_per_IP": 0.06186
}
},
"season": {
"games": 23,
"totals": {
"IP": 137.2,
"ER": 37.0,
"R": 42.0,
"H": 87.0,
"BB": 59.0,
"SO": 201.0,
"HR": 9.0,
"BF": 553.0,
"Pitches": 2347.0
},
"per_game": {
"IP": 6.0,
"ER": 1.6087,
"R": 1.8261,
"H": 3.7826,
"BB": 2.5652,
"SO": 8.7391,
"HR": 0.3913,
"BF": 24.0435,
"Pitches": 102.0435
},
"rates": {
"ERA": 2.4189,
"WHIP": 1.0605,
"ER_per_IP": 0.26877,
"H_per_IP": 0.63196,
"BB_per_IP": 0.42857,
"SO_per_IP": 1.46005,
"HR_per_IP": 0.06538
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 1.71,
"predicted_H": 3.585,
"predicted_BB": 2.66,
"predicted_SO": 8.478,
"predicted_HR": 0.494,
"predicted_ERA": 2.4037,
"predicted_WHIP": 0.9755
}
},
"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": 6.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.71,
"final": 1.8334,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.585,
"final": 3.7616,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.66,
"final": 2.8047,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 8.478,
"final": 6.5728,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.494,
"final": 0.2838,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.4037,
"final": 2.4037,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.9755,
"final": 0.9755,
"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": 64.2,
"ER": 15,
"H": 31,
"BB": 28,
"SO": 91,
"HR": 4,
"ERA": 2.0876288659793816,
"WHIP": 0.9123711340206186,
"K9": 12.664948453608249,
"HR9": 0.5567010309278352,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-16T00:00:00"
},
"recent_form_boost": 0.7284557668364717,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 3.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": 6.1,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 3,
"predicted_SO": 8,
"predicted_HR": 0
}
}
],
"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": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.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": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 8.0,
"delta": 4.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 8.0,
"delta": 4.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_R": 2.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.1,
"after": 6.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 4.0,
"delta": -4.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_SO",
"before": 8.0,
"after": 4.0,
"delta": -4.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"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": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TOR",
"games": 130,
"wins": 63,
"losses": 67,
"win_pct": 0.4846,
"runs_scored": 514.0,
"runs_allowed": 565.0,
"run_differential": -51.0,
"run_differential_per_game": -0.3923,
"avg_runs_scored": 3.9538,
"avg_runs_allowed": 4.3462,
"offense_index": 0.8796,
"defense_index": 1.0342,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 3.6,
"run_differential": 7.0
},
"available": true,
"quality_score": -0.0261
},
"opponent": {
"team": "NYY",
"games": 128,
"wins": 73,
"losses": 55,
"win_pct": 0.5703,
"runs_scored": 568.0,
"runs_allowed": 472.0,
"run_differential": 96.0,
"run_differential_per_game": 0.75,
"avg_runs_scored": 4.4375,
"avg_runs_allowed": 3.6875,
"offense_index": 0.9872,
"defense_index": 1.2189,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 2.3,
"run_differential": 14.0
},
"available": true,
"quality_score": 0.2215
},
"edges": {
"quality_edge": -0.2476,
"offense_edge": -0.1204,
"opponent_offense_edge": -0.0128,
"defense_strength": 0.0342,
"opponent_defense_weakness": -0.2189,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9916,
"run_prevention": 1.0069,
"strikeout": 0.9936
},
"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": 525.0,
"k_percent": 36.3,
"bb_percent": 10.7,
"woba": 0.248,
"xwoba": 0.254,
"sweet_spot_percent": 31.7,
"barrel_batted_rate": 4.9,
"hard_hit_percent": 32.4,
"avg_best_speed": 73.317,
"avg_hyper_speed": 93.1692,
"whiff_percent": 34.8,
"swing_percent": 46.1
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 1.2216,
"command_and_miss": 1.2964,
"regression_edge": -0.1714,
"xwoba_edge": 1.6286,
"barrel_edge": 0.4889,
"hard_hit_edge": 0.7571,
"whiff_edge": 1.3429,
"bb_edge": -0.4,
"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": 91.03372802060663,
"release_spin_rate": 2491.2390796033537,
"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": 91.03372802060663,
"release_spin_rate": 2491.2390796033537,
"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.0337,
"release_spin_rate": 2491.2391,
"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.4455,
"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.009,
"sample_weight": 1.0,
"run_prevention_factor": 0.9142,
"strikeout_factor": 1.1343,
"walk_factor": 1.032,
"homer_factor": 0.8817,
"woba_minus_xwoba": -0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "656302",
"espn_id": 34943,
"player_name": "Dylan Cease",
"team": "TOR",
"role": "pitcher",
"espn_rank": 5,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 5,
"gp_value": 23.0,
"gp_rank": 309,
"gs_value": 23.0,
"gs_rank": 59,
"qs_value": 12.0,
"qs_rank": 23,
"era_value": 2.4188,
"era_rank": 4.0,
"w_value": 7.0,
"w_rank": 67,
"l_value": 5.0,
"l_rank": 120,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 137.2,
"ip_rank": 37,
"h_value": 87.0,
"h_rank": 114,
"er_value": 37.0,
"er_rank": 140,
"hr_value": 9.0,
"hr_rank": 157,
"bb_value": 59.0,
"bb_rank": 9,
"k_value": 201.0,
"k_rank": 2,
"k_per_9_value": 13.140436,
"k_per_9_rank": 1,
"whip_value": 1.0605,
"whip_rank": 10.0,
"war_value": 5.07,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9142,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 0.9142,
"adjusted": 3
},
"predicted_BB": {
"original": 3.0,
"factor": 1.032,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 0.8817,
"adjusted": 0
},
"predicted_SO": {
"original": 9.0,
"factor": 1.1343,
"adjusted": 10
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 26,
"Pitches": 107,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260822_TOR@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"
}
} |
| 20260822 | 20260822_TOR@NYY | home | Ryan Weathers | Ryan Weathers | True | 6.0 | 3.1 | -8 | 3 | 2 | -1 | 4/8 | 0/0 | 4/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.5597014925373136,
"WHIP": 1.1940298507462686,
"IP": 134.0,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 5.583,
"recent_avg_IP": 6.333,
"last_start_IP": 7.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0233,
"sample_weight": 1.0,
"run_prevention_factor": 0.998,
"strikeout_factor": 1.0274,
"walk_factor": 0.956,
"homer_factor": 1.0468,
"regression_flag": "neutral",
"k_percent": 25.4,
"bb_percent": 6.9,
"woba": 0.302,
"xwoba": 0.316,
"barrel_percent": 8.4,
"hard_hit_percent": 41.1,
"whiff_percent": 27.0
},
"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": 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": "677960",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.2,
"ER": 3.0,
"R": 3.0,
"H": 21.0,
"BB": 9.0,
"SO": 25.0,
"HR": 1.0,
"BF": 119.0,
"Pitches": 492.0
},
"per_game": {
"IP": 6.1,
"ER": 0.6,
"R": 0.6,
"H": 4.2,
"BB": 1.8,
"SO": 5.0,
"HR": 0.2,
"BF": 23.8,
"Pitches": 98.4
},
"rates": {
"ERA": 0.8526,
"WHIP": 0.9474,
"ER_per_IP": 0.09474,
"H_per_IP": 0.66316,
"BB_per_IP": 0.28421,
"SO_per_IP": 0.78947,
"HR_per_IP": 0.03158
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.1,
"ER": 16.0,
"R": 20.0,
"H": 53.0,
"BB": 16.0,
"SO": 51.0,
"HR": 2.0,
"BF": 224.0,
"Pitches": 922.0
},
"per_game": {
"IP": 5.1,
"ER": 1.6,
"R": 2.0,
"H": 5.3,
"BB": 1.6,
"SO": 5.1,
"HR": 0.2,
"BF": 22.4,
"Pitches": 92.2
},
"rates": {
"ERA": 2.7,
"WHIP": 1.2937,
"ER_per_IP": 0.3,
"H_per_IP": 0.99375,
"BB_per_IP": 0.3,
"SO_per_IP": 0.95625,
"HR_per_IP": 0.0375
}
},
"season": {
"games": 24,
"totals": {
"IP": 134.0,
"ER": 53.0,
"R": 59.0,
"H": 122.0,
"BB": 38.0,
"SO": 140.0,
"HR": 18.0,
"BF": 551.0,
"Pitches": 2209.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2083,
"R": 2.4583,
"H": 5.0833,
"BB": 1.5833,
"SO": 5.8333,
"HR": 0.75,
"BF": 22.9583,
"Pitches": 92.0417
},
"rates": {
"ERA": 3.5597,
"WHIP": 1.194,
"ER_per_IP": 0.39552,
"H_per_IP": 0.91045,
"BB_per_IP": 0.28358,
"SO_per_IP": 1.04478,
"HR_per_IP": 0.13433
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.611,
"predicted_H": 5.016,
"predicted_BB": 1.779,
"predicted_SO": 5.334,
"predicted_HR": 0.414,
"predicted_ERA": 2.4681,
"predicted_WHIP": 1.1564
}
},
"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.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.611,
"final": 2.1983,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.016,
"final": 4.5864,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.779,
"final": 1.0268,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 5.334,
"final": 4.7699,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 3.0,
"form": 0.414,
"final": 1.5075,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.4681,
"final": 2.4681,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1564,
"final": 1.1564,
"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": 16,
"H": 53,
"BB": 16,
"SO": 51,
"HR": 2,
"ERA": 2.7,
"WHIP": 1.2937500000000002,
"K9": 8.606250000000001,
"HR9": 0.3375,
"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-16T00:00:00"
},
"recent_form_boost": 0.8068819910632758,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_BB": 0.0,
"predicted_SO": 4.0,
"predicted_HR": 3.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": "677960",
"player_name": "Ryan Weathers",
"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": 0.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 3.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 3.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 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": 4.0,
"after": 4.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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 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": "NYY",
"games": 128,
"wins": 73,
"losses": 55,
"win_pct": 0.5703,
"runs_scored": 568.0,
"runs_allowed": 472.0,
"run_differential": 96.0,
"run_differential_per_game": 0.75,
"avg_runs_scored": 4.4375,
"avg_runs_allowed": 3.6875,
"offense_index": 0.9872,
"defense_index": 1.2189,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 2.3,
"run_differential": 14.0
},
"available": true,
"quality_score": 0.2215
},
"opponent": {
"team": "TOR",
"games": 130,
"wins": 63,
"losses": 67,
"win_pct": 0.4846,
"runs_scored": 514.0,
"runs_allowed": 565.0,
"run_differential": -51.0,
"run_differential_per_game": -0.3923,
"avg_runs_scored": 3.9538,
"avg_runs_allowed": 4.3462,
"offense_index": 0.8796,
"defense_index": 1.0342,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 3.6,
"run_differential": 7.0
},
"available": true,
"quality_score": -0.0261
},
"edges": {
"quality_edge": 0.2476,
"offense_edge": -0.0128,
"opponent_offense_edge": -0.1204,
"defense_strength": 0.2189,
"opponent_defense_weakness": -0.0342,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0213,
"run_prevention": 0.9465,
"strikeout": 1.0171
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "677960",
"profile": {
"available": true,
"pitcher_id": "677960",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 522.0,
"k_percent": 25.4,
"bb_percent": 6.9,
"woba": 0.302,
"xwoba": 0.316,
"sweet_spot_percent": 31.4,
"barrel_batted_rate": 8.4,
"hard_hit_percent": 41.1,
"avg_best_speed": 77.9811,
"avg_hyper_speed": 94.6062,
"whiff_percent": 27.0,
"swing_percent": 44.9
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.0631,
"command_and_miss": 0.3957,
"regression_edge": -0.4,
"xwoba_edge": -0.1429,
"barrel_edge": -0.2889,
"hard_hit_edge": -0.4857,
"whiff_edge": 0.2286,
"bb_edge": 0.55,
"pitch_design_score": -0.0526
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "677960",
"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": 88.98110493934767,
"release_spin_rate": 2338.785642417081,
"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": 88.98110493934767,
"release_spin_rate": 2338.785642417081,
"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.9811,
"release_spin_rate": 2338.7856,
"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.0526,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.3756,
"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.0233,
"sample_weight": 1.0,
"run_prevention_factor": 0.998,
"strikeout_factor": 1.0274,
"walk_factor": 0.956,
"homer_factor": 1.0468,
"woba_minus_xwoba": -0.014,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "677960",
"espn_id": 41178,
"player_name": "Ryan Weathers",
"team": "NYY",
"role": "pitcher",
"espn_rank": 57,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 57,
"gp_value": 24.0,
"gp_rank": 287,
"gs_value": 24.0,
"gs_rank": 37,
"qs_value": 9.0,
"qs_rank": 59,
"era_value": 3.5597,
"era_rank": 26.0,
"w_value": 5.0,
"w_rank": 117,
"l_value": 7.0,
"l_rank": 64,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 134.0,
"ip_rank": 48,
"h_value": 122.0,
"h_rank": 46,
"er_value": 53.0,
"er_rank": 70,
"hr_value": 18.0,
"hr_rank": 36,
"bb_value": 38.0,
"bb_rank": 73,
"k_value": 140.0,
"k_rank": 25,
"k_per_9_value": 9.402985,
"k_per_9_rank": 14,
"whip_value": 1.194,
"whip_rank": 29.0,
"war_value": 2.16,
"war_rank": 1.0
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.998,
"adjusted": 1
},
"predicted_H": {
"original": 5.0,
"factor": 0.998,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.956,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0468,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0274,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 4,
"predicted_HR": 3,
"box_score_synced": true,
"BF": 22,
"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 -1."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -8 outs from the projected workload."
},
{
"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 -3."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260822_TOR@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"
}
} |
| 20260822 | 20260822_WAS@MIA | away | Jake Irvin | Jake Irvin | True | 4.2 | 6.0 | 4 | 3 | 4 | 1 | 3/6 | 0/2 | 5/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.80373831775701,
"WHIP": 1.3598130841121496,
"IP": 71.1,
"games_started": null,
"games_pitched": 15,
"role_avg_IP": 4.756,
"recent_avg_IP": 4.933,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.5275,
"sample_weight": 1.0,
"run_prevention_factor": 1.0448,
"strikeout_factor": 0.9966,
"walk_factor": 1.016,
"homer_factor": 1.1616,
"regression_flag": "neutral",
"k_percent": 23.0,
"bb_percent": 9.9,
"woba": 0.333,
"xwoba": 0.351,
"barrel_percent": 12.3,
"hard_hit_percent": 43.8,
"whiff_percent": 24.0
},
"espn_rank": {
"rank": 718,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "663623",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 15,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.2,
"ER": 16.0,
"R": 16.0,
"H": 18.0,
"BB": 10.0,
"SO": 21.0,
"HR": 5.0,
"BF": 101.0,
"Pitches": 410.0
},
"per_game": {
"IP": 5.0,
"ER": 3.2,
"R": 3.2,
"H": 3.6,
"BB": 2.0,
"SO": 4.2,
"HR": 1.0,
"BF": 20.2,
"Pitches": 82.0
},
"rates": {
"ERA": 5.8378,
"WHIP": 1.1351,
"ER_per_IP": 0.64865,
"H_per_IP": 0.72973,
"BB_per_IP": 0.40541,
"SO_per_IP": 0.85135,
"HR_per_IP": 0.2027
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.1,
"ER": 30.0,
"R": 33.0,
"H": 46.0,
"BB": 20.0,
"SO": 47.0,
"HR": 8.0,
"BF": 207.0,
"Pitches": 848.0
},
"per_game": {
"IP": 4.2,
"ER": 3.0,
"R": 3.3,
"H": 4.6,
"BB": 2.0,
"SO": 4.7,
"HR": 0.8,
"BF": 20.7,
"Pitches": 84.8
},
"rates": {
"ERA": 5.7042,
"WHIP": 1.3944,
"ER_per_IP": 0.6338,
"H_per_IP": 0.97183,
"BB_per_IP": 0.42254,
"SO_per_IP": 0.99296,
"HR_per_IP": 0.16901
}
},
"season": {
"games": 15,
"totals": {
"IP": 71.1,
"ER": 46.0,
"R": 50.0,
"H": 66.0,
"BB": 31.0,
"SO": 72.0,
"HR": 12.0,
"BF": 313.0,
"Pitches": 1279.0
},
"per_game": {
"IP": 4.2,
"ER": 3.0667,
"R": 3.3333,
"H": 4.4,
"BB": 2.0667,
"SO": 4.8,
"HR": 0.8,
"BF": 20.8667,
"Pitches": 85.2667
},
"rates": {
"ERA": 5.8037,
"WHIP": 1.3598,
"ER_per_IP": 0.64486,
"H_per_IP": 0.92523,
"BB_per_IP": 0.43458,
"SO_per_IP": 1.00935,
"HR_per_IP": 0.16822
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.954,
"predicted_H": 4.298,
"predicted_BB": 1.967,
"predicted_SO": 4.557,
"predicted_HR": 0.851,
"predicted_ERA": 5.4683,
"predicted_WHIP": 1.2884
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4556,
"form_weight": 0.5444,
"form_reliability": 0.75,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 0.0,
"form": 2.954,
"final": 1.6081,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 4.298,
"final": 2.7953,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.967,
"final": 1.0708,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.557,
"final": 3.8476,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.851,
"final": 0.4633,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.4683,
"final": 5.4683,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2884,
"final": 1.2884,
"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": 30,
"H": 46,
"BB": 20,
"SO": 47,
"HR": 8,
"ERA": 5.704225352112677,
"WHIP": 1.3943661971830987,
"K9": 8.93661971830986,
"HR9": 1.5211267605633805,
"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-16T00:00:00"
},
"recent_form_boost": 1.1473727481055294,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 0.0,
"predicted_H": 1.0,
"predicted_BB": 0.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 0,
"predicted_H": 1,
"predicted_BB": 0,
"predicted_SO": 3,
"predicted_HR": 0
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 3,
"predicted_H": 3,
"predicted_BB": 0,
"predicted_SO": 3,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663623",
"player_name": "Jake Irvin",
"position": "Starter",
"team": "WAS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 0.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 0.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "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": 0.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 3.0,
"delta": 3.0,
"percent_delta": null,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 3.0,
"delta": 2.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 2,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_ER",
"before": 0.0,
"after": 3.0,
"delta": 3.0,
"percent_delta": null,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 3.0,
"predicted_SO": 5.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.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 3.0,
"delta": 3.0,
"percent_delta": null,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 3.0,
"delta": 2.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 4,
"boosted_metrics": 3,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 3,
"biggest_boost": {
"metric": "predicted_ER",
"before": 0.0,
"after": 3.0,
"delta": 3.0,
"percent_delta": null,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "WAS",
"games": 130,
"wins": 61,
"losses": 69,
"win_pct": 0.4692,
"runs_scored": 678.0,
"runs_allowed": 662.0,
"run_differential": 16.0,
"run_differential_per_game": 0.1231,
"avg_runs_scored": 5.2154,
"avg_runs_allowed": 5.0923,
"offense_index": 1.1618,
"defense_index": 0.8815,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 3.5,
"avg_runs_allowed": 4.3,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.1161
},
"opponent": {
"team": "MIA",
"games": 129,
"wins": 65,
"losses": 64,
"win_pct": 0.5039,
"runs_scored": 563.0,
"runs_allowed": 548.0,
"run_differential": 15.0,
"run_differential_per_game": 0.1163,
"avg_runs_scored": 4.3643,
"avg_runs_allowed": 4.2481,
"offense_index": 0.9722,
"defense_index": 1.0567,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 3.9,
"run_differential": 0.0
},
"available": true,
"quality_score": 0.0176
},
"edges": {
"quality_edge": -0.1337,
"offense_edge": 0.1618,
"opponent_offense_edge": -0.0278,
"defense_strength": -0.1185,
"opponent_defense_weakness": -0.0567,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9922,
"run_prevention": 1.0141,
"strikeout": 0.9982
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663623",
"profile": {
"available": true,
"pitcher_id": "663623",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 286.0,
"k_percent": 23.0,
"bb_percent": 9.9,
"woba": 0.333,
"xwoba": 0.351,
"sweet_spot_percent": 35.5,
"barrel_batted_rate": 12.3,
"hard_hit_percent": 43.8,
"avg_best_speed": 76.8978,
"avg_hyper_speed": 94.5779,
"whiff_percent": 24.0,
"swing_percent": 46.7
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.8012,
"command_and_miss": -0.0586,
"regression_edge": -0.5143,
"xwoba_edge": -1.1429,
"barrel_edge": -1.1556,
"hard_hit_edge": -0.8714,
"whiff_edge": -0.2,
"bb_edge": -0.2,
"pitch_design_score": -0.1525
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663623",
"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": 87.19634892426923,
"release_spin_rate": 2379.0697775891504,
"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": 87.19634892426923,
"release_spin_rate": 2379.0697775891504,
"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.1963,
"release_spin_rate": 2379.0698,
"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.0895,
"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.5275,
"sample_weight": 1.0,
"run_prevention_factor": 1.0448,
"strikeout_factor": 0.9966,
"walk_factor": 1.016,
"homer_factor": 1.1616,
"woba_minus_xwoba": -0.018,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "663623",
"espn_id": 41290,
"player_name": "Jake Irvin",
"team": "WSH",
"role": "pitcher",
"espn_rank": 718,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 718,
"gp_value": 15.0,
"gp_rank": 428,
"gs_value": 15.0,
"gs_rank": 119,
"qs_value": 0.0,
"qs_rank": 203,
"era_value": 5.8037,
"era_rank": null,
"w_value": 2.0,
"w_rank": 287,
"l_value": 7.0,
"l_rank": 64,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 71.1,
"ip_rank": 156,
"h_value": 66.0,
"h_rank": 157,
"er_value": 46.0,
"er_rank": 100,
"hr_value": 12.0,
"hr_rank": 115,
"bb_value": 31.0,
"bb_rank": 127,
"k_value": 72.0,
"k_rank": 147,
"k_per_9_value": 9.084112,
"k_per_9_rank": 25,
"whip_value": 1.3598,
"whip_rank": null,
"war_value": -0.41,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0448,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 1.0448,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.016,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1616,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9966,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 17,
"Pitches": 85,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260822_WAS@MIA.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"
}
} |
| 20260822 | 20260822_WAS@MIA | home | Eury Pérez | Eury Pérez | True | 6.0 | 5.0 | -3 | 3 | 1 | -2 | 5/3 | 1/3 | 6/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.2282608695652173,
"WHIP": 1.108695652173913,
"IP": 122.2,
"games_started": null,
"games_pitched": 22,
"role_avg_IP": 5.576,
"recent_avg_IP": 6.2,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2346,
"sample_weight": 1.0,
"run_prevention_factor": 0.9801,
"strikeout_factor": 1.0451,
"walk_factor": 1.016,
"homer_factor": 1.0365,
"regression_flag": "neutral",
"k_percent": 26.9,
"bb_percent": 9.9,
"woba": 0.285,
"xwoba": 0.296,
"barrel_percent": 9.2,
"hard_hit_percent": 39.8,
"whiff_percent": 28.6
},
"espn_rank": {
"rank": 55,
"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": "691587",
"report_date": "20260822",
"season_year": 2026,
"rows_used": 22,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.0,
"ER": 8.0,
"R": 9.0,
"H": 22.0,
"BB": 12.0,
"SO": 29.0,
"HR": 0.0,
"BF": 123.0,
"Pitches": 492.0
},
"per_game": {
"IP": 6.1,
"ER": 1.6,
"R": 1.8,
"H": 4.4,
"BB": 2.4,
"SO": 5.8,
"HR": 0.0,
"BF": 24.6,
"Pitches": 98.4
},
"rates": {
"ERA": 2.3226,
"WHIP": 1.0968,
"ER_per_IP": 0.25806,
"H_per_IP": 0.70968,
"BB_per_IP": 0.3871,
"SO_per_IP": 0.93548,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.0,
"ER": 12.0,
"R": 13.0,
"H": 36.0,
"BB": 21.0,
"SO": 61.0,
"HR": 2.0,
"BF": 229.0,
"Pitches": 930.0
},
"per_game": {
"IP": 6.0,
"ER": 1.2,
"R": 1.3,
"H": 3.6,
"BB": 2.1,
"SO": 6.1,
"HR": 0.2,
"BF": 22.9,
"Pitches": 93.0
},
"rates": {
"ERA": 1.8,
"WHIP": 0.95,
"ER_per_IP": 0.2,
"H_per_IP": 0.6,
"BB_per_IP": 0.35,
"SO_per_IP": 1.01667,
"HR_per_IP": 0.03333
}
},
"season": {
"games": 22,
"totals": {
"IP": 122.2,
"ER": 44.0,
"R": 49.0,
"H": 87.0,
"BB": 49.0,
"SO": 133.0,
"HR": 13.0,
"BF": 494.0,
"Pitches": 1993.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0,
"R": 2.2273,
"H": 3.9545,
"BB": 2.2273,
"SO": 6.0455,
"HR": 0.5909,
"BF": 22.4545,
"Pitches": 90.5909
},
"rates": {
"ERA": 3.2283,
"WHIP": 1.1087,
"ER_per_IP": 0.3587,
"H_per_IP": 0.70924,
"BB_per_IP": 0.39946,
"SO_per_IP": 1.08424,
"HR_per_IP": 0.10598
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.839,
"predicted_H": 4.414,
"predicted_BB": 2.273,
"predicted_SO": 5.981,
"predicted_HR": 0.329,
"predicted_ERA": 2.7282,
"predicted_WHIP": 1.1022
}
},
"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": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.839,
"final": 2.3362,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.414,
"final": 4.665,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.273,
"final": 1.7278,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 5.981,
"final": 5.5609,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.329,
"final": 0.6164,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.7282,
"final": 2.7282,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1022,
"final": 1.1022,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 60.0,
"ER": 12,
"H": 36,
"BB": 21,
"SO": 61,
"HR": 2,
"ERA": 1.8,
"WHIP": 0.95,
"K9": 9.15,
"HR9": 0.3,
"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-16T00:00:00"
},
"recent_form_boost": 0.6970382410632758,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 22.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8148,
"prior_weight": 0.1852
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3,
"predicted_H": 5,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1
}
}
],
"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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"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": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIA",
"games": 129,
"wins": 65,
"losses": 64,
"win_pct": 0.5039,
"runs_scored": 563.0,
"runs_allowed": 548.0,
"run_differential": 15.0,
"run_differential_per_game": 0.1163,
"avg_runs_scored": 4.3643,
"avg_runs_allowed": 4.2481,
"offense_index": 0.9722,
"defense_index": 1.0567,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 3.9,
"run_differential": 0.0
},
"available": true,
"quality_score": 0.0176
},
"opponent": {
"team": "WAS",
"games": 130,
"wins": 61,
"losses": 69,
"win_pct": 0.4692,
"runs_scored": 678.0,
"runs_allowed": 662.0,
"run_differential": 16.0,
"run_differential_per_game": 0.1231,
"avg_runs_scored": 5.2154,
"avg_runs_allowed": 5.0923,
"offense_index": 1.1618,
"defense_index": 0.8815,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 3.5,
"avg_runs_allowed": 4.3,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.1161
},
"edges": {
"quality_edge": 0.1337,
"offense_edge": -0.0278,
"opponent_offense_edge": 0.1618,
"defense_strength": 0.0567,
"opponent_defense_weakness": 0.1185,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0006,
"run_prevention": 1.0135,
"strikeout": 0.9911
},
"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": 471.0,
"k_percent": 26.9,
"bb_percent": 9.9,
"woba": 0.285,
"xwoba": 0.296,
"sweet_spot_percent": 30.9,
"barrel_batted_rate": 9.2,
"hard_hit_percent": 39.8,
"avg_best_speed": 76.8992,
"avg_hyper_speed": 94.1231,
"whiff_percent": 28.6,
"swing_percent": 51.5
},
"league_medians": {
"pa": 124.0,
"k_percent": 22.2,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.5495,
"avg_hyper_speed": 93.8839,
"whiff_percent": 25.4,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.2553,
"command_and_miss": 0.4221,
"regression_edge": -0.3143,
"xwoba_edge": 0.4286,
"barrel_edge": -0.4667,
"hard_hit_edge": -0.3,
"whiff_edge": 0.4571,
"bb_edge": -0.2,
"pitch_design_score": 0.1664
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "691587",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 97,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 92.89106657796374,
"release_spin_rate": 2520.8201294983355,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 92.89106657796374,
"release_spin_rate": 2520.8201294983355,
"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.8911,
"release_spin_rate": 2520.8201,
"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.1664,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1884,
"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.2346,
"sample_weight": 1.0,
"run_prevention_factor": 0.9801,
"strikeout_factor": 1.0451,
"walk_factor": 1.016,
"homer_factor": 1.0365,
"woba_minus_xwoba": -0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": true,
"player_id": "691587",
"espn_id": 4917854,
"player_name": "Eury Perez",
"team": "MIA",
"role": "pitcher",
"espn_rank": 55,
"espn_total_ranked": 821,
"metrics": {
"espn_rank": 55,
"gp_value": 22.0,
"gp_rank": 329,
"gs_value": 22.0,
"gs_rank": 68,
"qs_value": 11.0,
"qs_rank": 35,
"era_value": 3.2282,
"era_rank": null,
"w_value": 6.0,
"w_rank": 90,
"l_value": 9.0,
"l_rank": 17,
"sv_value": 0.0,
"sv_rank": 239,
"hld_value": 0.0,
"hld_rank": 324,
"ip_value": 122.2,
"ip_rank": 68,
"h_value": 87.0,
"h_rank": 114,
"er_value": 44.0,
"er_rank": 110,
"hr_value": 13.0,
"hr_rank": 98,
"bb_value": 49.0,
"bb_rank": 20,
"k_value": 133.0,
"k_rank": 34,
"k_per_9_value": 9.758152,
"k_per_9_rank": 13,
"whip_value": 1.1086,
"whip_rank": null,
"war_value": 2.23,
"war_rank": null
},
"source": "espn_statistics_byathlete"
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9801,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9801,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.016,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0365,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0451,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 95,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260822_WAS@MIA.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"
}
} |