| 20260925 | 20260925_ARI@SD | away | Brandon Pfaadt | Brandon Pfaadt | True | 6.0 | 7.2 | 5 | 5 | 4 | -1 | 8/9 | 2/2 | 4/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.7168831168831167,
"WHIP": 1.1688311688311688,
"IP": 128.1,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.944,
"recent_avg_IP": 6.0,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0014,
"sample_weight": 1.0,
"run_prevention_factor": 1.0001,
"strikeout_factor": 0.948,
"walk_factor": 0.93,
"homer_factor": 0.9801,
"regression_flag": "neutral",
"k_percent": 16.4,
"bb_percent": 5.6,
"woba": 0.298,
"xwoba": 0.303,
"barrel_percent": 7.4,
"hard_hit_percent": 35.0,
"whiff_percent": 21.5
},
"espn_rank": {
"rank": 112,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "694297",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 16.0,
"R": 16.0,
"H": 32.0,
"BB": 6.0,
"SO": 18.0,
"HR": 3.0,
"BF": 128.0,
"Pitches": 446.0
},
"per_game": {
"IP": 6.0,
"ER": 3.2,
"R": 3.2,
"H": 6.4,
"BB": 1.2,
"SO": 3.6,
"HR": 0.6,
"BF": 25.6,
"Pitches": 89.2
},
"rates": {
"ERA": 4.8,
"WHIP": 1.2667,
"ER_per_IP": 0.53333,
"H_per_IP": 1.06667,
"BB_per_IP": 0.2,
"SO_per_IP": 0.6,
"HR_per_IP": 0.1
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 63.1,
"ER": 21.0,
"R": 22.0,
"H": 54.0,
"BB": 10.0,
"SO": 42.0,
"HR": 6.0,
"BF": 251.0,
"Pitches": 911.0
},
"per_game": {
"IP": 6.1,
"ER": 2.1,
"R": 2.2,
"H": 5.4,
"BB": 1.0,
"SO": 4.2,
"HR": 0.6,
"BF": 25.1,
"Pitches": 91.1
},
"rates": {
"ERA": 2.9842,
"WHIP": 1.0105,
"ER_per_IP": 0.33158,
"H_per_IP": 0.85263,
"BB_per_IP": 0.15789,
"SO_per_IP": 0.66316,
"HR_per_IP": 0.09474
}
},
"season": {
"games": 28,
"totals": {
"IP": 128.1,
"ER": 53.0,
"R": 57.0,
"H": 120.0,
"BB": 30.0,
"SO": 87.0,
"HR": 14.0,
"BF": 531.0,
"Pitches": 1927.0
},
"per_game": {
"IP": 4.2,
"ER": 1.8929,
"R": 2.0357,
"H": 4.2857,
"BB": 1.0714,
"SO": 3.1071,
"HR": 0.5,
"BF": 18.9643,
"Pitches": 68.8214
},
"rates": {
"ERA": 3.7169,
"WHIP": 1.1688,
"ER_per_IP": 0.41299,
"H_per_IP": 0.93506,
"BB_per_IP": 0.23377,
"SO_per_IP": 0.67792,
"HR_per_IP": 0.10909
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.642,
"predicted_H": 5.686,
"predicted_BB": 1.293,
"predicted_SO": 4.011,
"predicted_HR": 0.631,
"predicted_ERA": 4.0489,
"predicted_WHIP": 1.1885
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.414,
"form_weight": 0.586,
"form_reliability": 0.8485,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.642,
"final": 3.2042,
"source": "model_form_blend"
},
"predicted_H": {
"model": 8.0,
"form": 5.686,
"final": 6.644,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.293,
"final": 1.5857,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.011,
"final": 3.5924,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.631,
"final": 0.3698,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.0489,
"final": 4.0489,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1885,
"final": 1.1885,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 63.1,
"ER": 21,
"H": 54,
"BB": 10,
"SO": 42,
"HR": 6,
"ERA": 2.984210526315789,
"WHIP": 1.0105263157894737,
"K9": 5.968421052631578,
"HR9": 0.8526315789473684,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.8217271195671689,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_BB": 2.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "694297",
"player_name": "Brandon Pfaadt",
"position": "Starter",
"team": "ARI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 4.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ARI",
"games": 159,
"wins": 85,
"losses": 74,
"win_pct": 0.5346,
"runs_scored": 717.0,
"runs_allowed": 707.0,
"run_differential": 10.0,
"run_differential_per_game": 0.0629,
"avg_runs_scored": 4.5094,
"avg_runs_allowed": 4.4465,
"offense_index": 1.0086,
"defense_index": 1.0055,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.8,
"avg_runs_allowed": 5.1,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.0721
},
"opponent": {
"team": "SD",
"games": 159,
"wins": 89,
"losses": 70,
"win_pct": 0.5597,
"runs_scored": 699.0,
"runs_allowed": 659.0,
"run_differential": 40.0,
"run_differential_per_game": 0.2516,
"avg_runs_scored": 4.3962,
"avg_runs_allowed": 4.1447,
"offense_index": 0.9833,
"defense_index": 1.0787,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.0,
"avg_runs_allowed": 4.2,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.1867
},
"edges": {
"quality_edge": -0.1146,
"offense_edge": 0.0086,
"opponent_offense_edge": -0.0167,
"defense_strength": 0.0055,
"opponent_defense_weakness": -0.0787,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9962,
"run_prevention": 1.0025,
"strikeout": 0.9979
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "694297",
"profile": {
"available": true,
"pitcher_id": "694297",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 508.0,
"k_percent": 16.4,
"bb_percent": 5.6,
"woba": 0.298,
"xwoba": 0.303,
"sweet_spot_percent": 31.9,
"barrel_batted_rate": 7.4,
"hard_hit_percent": 35.0,
"avg_best_speed": 78.338,
"avg_hyper_speed": 93.4651,
"whiff_percent": 21.5,
"swing_percent": 49.7
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1963,
"command_and_miss": -0.36,
"regression_edge": -0.1429,
"xwoba_edge": 0.2286,
"barrel_edge": -0.0444,
"hard_hit_edge": 0.4143,
"whiff_edge": -0.5,
"bb_edge": 0.875,
"pitch_design_score": -0.0426
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "694297",
"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": 89.10309497222958,
"release_spin_rate": 2461.9059118108958,
"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": 89.10309497222958,
"release_spin_rate": 2461.9059118108958,
"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.1031,
"release_spin_rate": 2461.9059,
"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.0426,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.3042,
"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.0014,
"sample_weight": 1.0,
"run_prevention_factor": 1.0001,
"strikeout_factor": 0.948,
"walk_factor": 0.93,
"homer_factor": 0.9801,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "694297",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0001,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0001,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.93,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9801,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.948,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 8,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 28,
"Pitches": 116,
"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/20260925_ARI@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"
}
} |
| 20260925 | 20260925_ARI@SD | home | Casey Mize | Casey Mize | True | 4.2 | 4.0 | -2 | 3 | 7 | 4 | 5/7 | 2/2 | 7/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.9581151832460733,
"WHIP": 1.1937172774869111,
"IP": 127.1,
"games_started": null,
"games_pitched": 25,
"role_avg_IP": 5.093,
"recent_avg_IP": 4.533,
"last_start_IP": 3.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0643,
"sample_weight": 1.0,
"run_prevention_factor": 0.9945,
"strikeout_factor": 0.984,
"walk_factor": 0.954,
"homer_factor": 1.0089,
"regression_flag": "neutral",
"k_percent": 20.6,
"bb_percent": 6.8,
"woba": 0.307,
"xwoba": 0.298,
"barrel_percent": 8.1,
"hard_hit_percent": 38.6,
"whiff_percent": 23.6
},
"espn_rank": {
"rank": 115,
"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": "663554",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 25,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.2,
"ER": 16.0,
"R": 21.0,
"H": 28.0,
"BB": 10.0,
"SO": 14.0,
"HR": 5.0,
"BF": 107.0,
"Pitches": 401.0
},
"per_game": {
"IP": 4.2,
"ER": 3.2,
"R": 4.2,
"H": 5.6,
"BB": 2.0,
"SO": 2.8,
"HR": 1.0,
"BF": 21.4,
"Pitches": 80.2
},
"rates": {
"ERA": 6.3529,
"WHIP": 1.6765,
"ER_per_IP": 0.70588,
"H_per_IP": 1.23529,
"BB_per_IP": 0.44118,
"SO_per_IP": 0.61765,
"HR_per_IP": 0.22059
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 46.2,
"ER": 31.0,
"R": 36.0,
"H": 52.0,
"BB": 17.0,
"SO": 27.0,
"HR": 10.0,
"BF": 208.0,
"Pitches": 779.0
},
"per_game": {
"IP": 4.2,
"ER": 3.1,
"R": 3.6,
"H": 5.2,
"BB": 1.7,
"SO": 2.7,
"HR": 1.0,
"BF": 20.8,
"Pitches": 77.9
},
"rates": {
"ERA": 5.9786,
"WHIP": 1.4786,
"ER_per_IP": 0.66429,
"H_per_IP": 1.11429,
"BB_per_IP": 0.36429,
"SO_per_IP": 0.57857,
"HR_per_IP": 0.21429
}
},
"season": {
"games": 25,
"totals": {
"IP": 127.1,
"ER": 56.0,
"R": 62.0,
"H": 116.0,
"BB": 36.0,
"SO": 109.0,
"HR": 15.0,
"BF": 528.0,
"Pitches": 2012.0
},
"per_game": {
"IP": 5.0,
"ER": 2.24,
"R": 2.48,
"H": 4.64,
"BB": 1.44,
"SO": 4.36,
"HR": 0.6,
"BF": 21.12,
"Pitches": 80.48
},
"rates": {
"ERA": 3.9581,
"WHIP": 1.1937,
"ER_per_IP": 0.43979,
"H_per_IP": 0.91099,
"BB_per_IP": 0.28272,
"SO_per_IP": 0.85602,
"HR_per_IP": 0.1178
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.915,
"predicted_H": 5.214,
"predicted_BB": 1.803,
"predicted_SO": 3.302,
"predicted_HR": 0.896,
"predicted_ERA": 5.5549,
"predicted_WHIP": 1.4859
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4204,
"form_weight": 0.5796,
"form_reliability": 0.8333,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.915,
"final": 2.9507,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.214,
"final": 5.124,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.803,
"final": 1.8858,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 3.302,
"final": 4.8568,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.896,
"final": 0.9397,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.5549,
"final": 5.5549,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4859,
"final": 1.4859,
"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": 31,
"H": 52,
"BB": 17,
"SO": 27,
"HR": 10,
"ERA": 5.978571428571429,
"WHIP": 1.4785714285714286,
"K9": 5.207142857142857,
"HR9": 1.9285714285714286,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 1.1702938488904773,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 7.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": "663554",
"player_name": "Casey Mize",
"position": "Starter",
"team": "SD",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 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": 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": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SD",
"games": 159,
"wins": 89,
"losses": 70,
"win_pct": 0.5597,
"runs_scored": 699.0,
"runs_allowed": 659.0,
"run_differential": 40.0,
"run_differential_per_game": 0.2516,
"avg_runs_scored": 4.3962,
"avg_runs_allowed": 4.1447,
"offense_index": 0.9833,
"defense_index": 1.0787,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.0,
"avg_runs_allowed": 4.2,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.1867
},
"opponent": {
"team": "ARI",
"games": 159,
"wins": 85,
"losses": 74,
"win_pct": 0.5346,
"runs_scored": 717.0,
"runs_allowed": 707.0,
"run_differential": 10.0,
"run_differential_per_game": 0.0629,
"avg_runs_scored": 4.5094,
"avg_runs_allowed": 4.4465,
"offense_index": 1.0086,
"defense_index": 1.0055,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.8,
"avg_runs_allowed": 5.1,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.0721
},
"edges": {
"quality_edge": 0.1146,
"offense_edge": -0.0167,
"opponent_offense_edge": 0.0086,
"defense_strength": 0.0787,
"opponent_defense_weakness": -0.0055,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0066,
"run_prevention": 0.9878,
"strikeout": 1.0028
},
"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": 508.0,
"k_percent": 20.6,
"bb_percent": 6.8,
"woba": 0.307,
"xwoba": 0.298,
"sweet_spot_percent": 35.7,
"barrel_batted_rate": 8.1,
"hard_hit_percent": 38.6,
"avg_best_speed": 78.8539,
"avg_hyper_speed": 94.0019,
"whiff_percent": 23.6,
"swing_percent": 47.6
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0901,
"command_and_miss": -0.045,
"regression_edge": 0.2571,
"xwoba_edge": 0.3714,
"barrel_edge": -0.2,
"hard_hit_edge": -0.1,
"whiff_edge": -0.2,
"bb_edge": 0.575,
"pitch_design_score": -0.0025
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663554",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 74,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 74,
"pitch_usage": 0.0,
"release_speed": 89.81822385564924,
"release_spin_rate": 2090.099354593912,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 74,
"pitch_usage": 0.0,
"release_speed": 89.81822385564924,
"release_spin_rate": 2090.099354593912,
"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.8182,
"release_spin_rate": 2090.0994,
"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.0025,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0182,
"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.0643,
"sample_weight": 1.0,
"run_prevention_factor": 0.9945,
"strikeout_factor": 0.984,
"walk_factor": 0.954,
"homer_factor": 1.0089,
"woba_minus_xwoba": 0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "663554",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9945,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9945,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.954,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0089,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.984,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 94,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 4",
"detail": "Actual minus predicted earned runs was +4; this is the primary run-prevention error."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260925_ARI@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"
}
} |
| 20260925 | 20260925_ATL@MIA | away | Ray Kerr | Ray Kerr | True | 5.0 | 3.0 | -6 | 0 | 0 | 0 | 0/2 | 3/1 | 5/0 | Last 10 before this game (8 available){
"model_context": {
"embedded_season": {
"ERA": 1.7608695652173911,
"WHIP": 0.5217391304347826,
"IP": 15.1,
"games_started": null,
"games_pitched": 8,
"role_avg_IP": 3.222,
"recent_avg_IP": 3.222,
"last_start_IP": 3.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2233,
"sample_weight": 0.45,
"run_prevention_factor": 0.981,
"strikeout_factor": 0.9969,
"walk_factor": 0.9343,
"homer_factor": 0.9737,
"regression_flag": "negative_pitcher_regression",
"k_percent": 20.0,
"bb_percent": 1.8,
"woba": 0.205,
"xwoba": 0.266,
"barrel_percent": 7.3,
"hard_hit_percent": 34.1,
"whiff_percent": 25.8
},
"espn_rank": {
"rank": 280,
"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": 3.139,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.3856,
"prior_weight": 0.6144
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "678061",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 8,
"reference_playing_time": 4.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 12.0,
"ER": 2.0,
"R": 2.0,
"H": 5.0,
"BB": 0.0,
"SO": 10.0,
"HR": 2.0,
"BF": 39.0,
"Pitches": 129.0
},
"per_game": {
"IP": 2.1,
"ER": 0.4,
"R": 0.4,
"H": 1.0,
"BB": 0.0,
"SO": 2.0,
"HR": 0.4,
"BF": 7.8,
"Pitches": 25.8
},
"rates": {
"ERA": 1.5,
"WHIP": 0.4167,
"ER_per_IP": 0.16667,
"H_per_IP": 0.41667,
"BB_per_IP": 0.0,
"SO_per_IP": 0.83333,
"HR_per_IP": 0.16667
}
},
"last_10": {
"games": 8,
"totals": {
"IP": 15.1,
"ER": 3.0,
"R": 3.0,
"H": 7.0,
"BB": 1.0,
"SO": 11.0,
"HR": 2.0,
"BF": 55.0,
"Pitches": 180.0
},
"per_game": {
"IP": 2.0,
"ER": 0.375,
"R": 0.375,
"H": 0.875,
"BB": 0.125,
"SO": 1.375,
"HR": 0.25,
"BF": 6.875,
"Pitches": 22.5
},
"rates": {
"ERA": 1.7609,
"WHIP": 0.5217,
"ER_per_IP": 0.19565,
"H_per_IP": 0.45652,
"BB_per_IP": 0.06522,
"SO_per_IP": 0.71739,
"HR_per_IP": 0.13043
}
},
"season": {
"games": 8,
"totals": {
"IP": 15.1,
"ER": 3.0,
"R": 3.0,
"H": 7.0,
"BB": 1.0,
"SO": 11.0,
"HR": 2.0,
"BF": 55.0,
"Pitches": 180.0
},
"per_game": {
"IP": 2.0,
"ER": 0.375,
"R": 0.375,
"H": 0.875,
"BB": 0.125,
"SO": 1.375,
"HR": 0.25,
"BF": 6.875,
"Pitches": 22.5
},
"rates": {
"ERA": 1.7609,
"WHIP": 0.5217,
"ER_per_IP": 0.19565,
"H_per_IP": 0.45652,
"BB_per_IP": 0.06522,
"SO_per_IP": 0.71739,
"HR_per_IP": 0.13043
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.2,
"predicted_ER": 1.348,
"predicted_H": 2.712,
"predicted_BB": 0.846,
"predicted_SO": 3.108,
"predicted_HR": 0.533,
"predicted_ERA": 3.4459,
"predicted_WHIP": 1.0104
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.6096,
"form_weight": 0.3904,
"form_reliability": 0.3856,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.139,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.3856,
"prior_weight": 0.6144
},
"applied_metrics": {
"predicted_IP": {
"model": 4.1,
"form": 3.2,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 0.0,
"form": 1.348,
"final": 0.5263,
"source": "model_form_blend"
},
"predicted_H": {
"model": 0.0,
"form": 2.712,
"final": 1.0588,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 0.846,
"final": 2.159,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.108,
"final": 4.2613,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.533,
"final": 0.2081,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.4459,
"final": 3.4459,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0104,
"final": 1.0104,
"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": 15.1,
"ER": 3,
"H": 7,
"BB": 1,
"SO": 11,
"HR": 2,
"ERA": 1.7608695652173911,
"WHIP": 0.5217391304347825,
"K9": 6.456521739130434,
"HR9": 1.1739130434782608,
"games_pitched": 8,
"quality_starts": 0,
"dominant_form": true,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 8,
"error_prone": false
},
"games_count": 8,
"latest_game_date": "2026-09-20T00:00:00"
},
"recent_form_boost": 0.8326982331371388,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.333333333333333,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_BB": 3.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.139,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.3856,
"prior_weight": 0.6144
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "678061",
"player_name": "Ray Kerr",
"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": 3.0,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 4.3333,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 0.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": 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": 4.3333,
"after": 5.0,
"delta": 0.6667,
"percent_delta": 0.1538,
"direction": "boost",
"projection_effect": "better",
"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": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 5.0,
"delta": 0.6667,
"percent_delta": 0.1538,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.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": 4.3333,
"after": 5.0,
"delta": 0.6667,
"percent_delta": 0.1539,
"direction": "boost",
"projection_effect": "better",
"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": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 5.0,
"delta": 0.6667,
"percent_delta": 0.1539,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ATL",
"games": 159,
"wins": 93,
"losses": 66,
"win_pct": 0.5849,
"runs_scored": 731.0,
"runs_allowed": 615.0,
"run_differential": 116.0,
"run_differential_per_game": 0.7296,
"avg_runs_scored": 4.5975,
"avg_runs_allowed": 3.8679,
"offense_index": 1.0274,
"defense_index": 1.1569,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 4.7,
"run_differential": -5.0
},
"available": true,
"quality_score": 0.1618
},
"opponent": {
"team": "MIA",
"games": 159,
"wins": 78,
"losses": 81,
"win_pct": 0.4906,
"runs_scored": 704.0,
"runs_allowed": 701.0,
"run_differential": 3.0,
"run_differential_per_game": 0.0189,
"avg_runs_scored": 4.4277,
"avg_runs_allowed": 4.4088,
"offense_index": 0.9894,
"defense_index": 1.015,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.5,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.0057
},
"edges": {
"quality_edge": 0.1675,
"offense_edge": 0.0274,
"opponent_offense_edge": -0.0106,
"defense_strength": 0.1569,
"opponent_defense_weakness": -0.015,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0118,
"run_prevention": 0.9742,
"strikeout": 1.0059
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "678061",
"profile": {
"available": true,
"pitcher_id": "678061",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 50.0,
"k_percent": 20.0,
"bb_percent": 1.8,
"woba": 0.205,
"xwoba": 0.266,
"sweet_spot_percent": 26.8,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 34.1,
"avg_best_speed": 78.2755,
"avg_hyper_speed": 93.7728,
"whiff_percent": 25.8,
"swing_percent": 51.7
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 1.0718,
"command_and_miss": 0.2764,
"regression_edge": -1.7429,
"xwoba_edge": 1.2857,
"barrel_edge": -0.0222,
"hard_hit_edge": 0.5429,
"whiff_edge": 0.1143,
"bb_edge": 1.825,
"pitch_design_score": -0.0191
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "678061",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 25,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 25,
"pitch_usage": 0.0,
"release_speed": 89.52283282543786,
"release_spin_rate": 2148.8918500733625,
"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": 25,
"pitch_usage": 0.0,
"release_speed": 89.52283282543786,
"release_spin_rate": 2148.8918500733625,
"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.5228,
"release_spin_rate": 2148.8919,
"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.0191,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.1363,
"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.2233,
"sample_weight": 0.45,
"run_prevention_factor": 0.981,
"strikeout_factor": 0.9969,
"walk_factor": 0.9343,
"homer_factor": 0.9737,
"woba_minus_xwoba": -0.061,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "678061",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 0.0,
"factor": 0.9914,
"adjusted": 0
},
"predicted_H": {
"original": 1.0,
"factor": 0.9914,
"adjusted": 1
},
"predicted_BB": {
"original": 0.0,
"factor": 0.9704,
"adjusted": 0
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9882,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9986,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 0,
"predicted_R": 0,
"predicted_ER": 0,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 18,
"Pitches": 87,
"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 +0."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -6 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260925_ATL@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"
}
} |
| 20260925 | 20260925_ATL@MIA | home | Eury Pérez | Eury Pérez | True | 5.0 | 9.0 | 12 | 1 | 0 | -1 | 5/1 | 2/1 | 6/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.14,
"WHIP": 1.2666666666666666,
"IP": 150.0,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.321,
"recent_avg_IP": 4.267,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0161,
"sample_weight": 1.0,
"run_prevention_factor": 0.9986,
"strikeout_factor": 1.0423,
"walk_factor": 1.03,
"homer_factor": 1.0712,
"regression_flag": "neutral",
"k_percent": 25.7,
"bb_percent": 10.6,
"woba": 0.314,
"xwoba": 0.315,
"barrel_percent": 10.5,
"hard_hit_percent": 39.5,
"whiff_percent": 28.7
},
"espn_rank": {
"rank": null,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "691587",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 19.1,
"ER": 19.0,
"R": 21.0,
"H": 31.0,
"BB": 11.0,
"SO": 20.0,
"HR": 6.0,
"BF": 101.0,
"Pitches": 401.0
},
"per_game": {
"IP": 4.0,
"ER": 3.8,
"R": 4.2,
"H": 6.2,
"BB": 2.2,
"SO": 4.0,
"HR": 1.2,
"BF": 20.2,
"Pitches": 80.2
},
"rates": {
"ERA": 8.8448,
"WHIP": 2.1724,
"ER_per_IP": 0.98276,
"H_per_IP": 1.60345,
"BB_per_IP": 0.56897,
"SO_per_IP": 1.03448,
"HR_per_IP": 0.31034
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 45.1,
"ER": 29.0,
"R": 32.0,
"H": 48.0,
"BB": 27.0,
"SO": 50.0,
"HR": 7.0,
"BF": 208.0,
"Pitches": 866.0
},
"per_game": {
"IP": 4.2,
"ER": 2.9,
"R": 3.2,
"H": 4.8,
"BB": 2.7,
"SO": 5.0,
"HR": 0.7,
"BF": 20.8,
"Pitches": 86.6
},
"rates": {
"ERA": 5.7574,
"WHIP": 1.6544,
"ER_per_IP": 0.63971,
"H_per_IP": 1.05882,
"BB_per_IP": 0.59559,
"SO_per_IP": 1.10294,
"HR_per_IP": 0.15441
}
},
"season": {
"games": 29,
"totals": {
"IP": 150.0,
"ER": 69.0,
"R": 77.0,
"H": 123.0,
"BB": 67.0,
"SO": 162.0,
"HR": 20.0,
"BF": 631.0,
"Pitches": 2568.0
},
"per_game": {
"IP": 5.1,
"ER": 2.3793,
"R": 2.6552,
"H": 4.2414,
"BB": 2.3103,
"SO": 5.5862,
"HR": 0.6897,
"BF": 21.7586,
"Pitches": 88.5517
},
"rates": {
"ERA": 4.14,
"WHIP": 1.2667,
"ER_per_IP": 0.46,
"H_per_IP": 0.82,
"BB_per_IP": 0.44667,
"SO_per_IP": 1.08,
"HR_per_IP": 0.13333
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 3.302,
"predicted_H": 5.562,
"predicted_BB": 2.415,
"predicted_SO": 4.794,
"predicted_HR": 0.96,
"predicted_ERA": 6.4984,
"predicted_WHIP": 1.7441
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4121,
"form_weight": 0.5879,
"form_reliability": 0.8529,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 3.302,
"final": 2.3532,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.562,
"final": 5.3304,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.415,
"final": 2.244,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.794,
"final": 5.2911,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.96,
"final": 0.9765,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.4984,
"final": 6.4984,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.7441,
"final": 1.7441,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 45.1,
"ER": 29,
"H": 48,
"BB": 27,
"SO": 50,
"HR": 7,
"ERA": 5.75735294117647,
"WHIP": 1.6544117647058822,
"K9": 9.926470588235293,
"HR9": 1.3897058823529411,
"games_pitched": 10,
"quality_starts": 2,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-22T00:00:00"
},
"recent_form_boost": 1.1498027774619057,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "691587",
"player_name": "Eury P\u00e9rez",
"position": "Starter",
"team": "MIA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 1.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIA",
"games": 159,
"wins": 78,
"losses": 81,
"win_pct": 0.4906,
"runs_scored": 704.0,
"runs_allowed": 701.0,
"run_differential": 3.0,
"run_differential_per_game": 0.0189,
"avg_runs_scored": 4.4277,
"avg_runs_allowed": 4.4088,
"offense_index": 0.9894,
"defense_index": 1.015,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.5,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.0057
},
"opponent": {
"team": "ATL",
"games": 159,
"wins": 93,
"losses": 66,
"win_pct": 0.5849,
"runs_scored": 731.0,
"runs_allowed": 615.0,
"run_differential": 116.0,
"run_differential_per_game": 0.7296,
"avg_runs_scored": 4.5975,
"avg_runs_allowed": 3.8679,
"offense_index": 1.0274,
"defense_index": 1.1569,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 4.7,
"run_differential": -5.0
},
"available": true,
"quality_score": 0.1618
},
"edges": {
"quality_edge": -0.1675,
"offense_edge": -0.0106,
"opponent_offense_edge": 0.0274,
"defense_strength": 0.015,
"opponent_defense_weakness": -0.1569,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9927,
"run_prevention": 1.0113,
"strikeout": 0.9928
},
"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": 602.0,
"k_percent": 25.7,
"bb_percent": 10.6,
"woba": 0.314,
"xwoba": 0.315,
"sweet_spot_percent": 33.2,
"barrel_batted_rate": 10.5,
"hard_hit_percent": 39.5,
"avg_best_speed": 76.9293,
"avg_hyper_speed": 94.2717,
"whiff_percent": 28.7,
"swing_percent": 50.9
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.1512,
"command_and_miss": 0.3479,
"regression_edge": -0.0286,
"xwoba_edge": -0.1143,
"barrel_edge": -0.7333,
"hard_hit_edge": -0.2286,
"whiff_edge": 0.5286,
"bb_edge": -0.375,
"pitch_design_score": 0.1642
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "691587",
"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": 92.79616242963277,
"release_spin_rate": 2525.323439420152,
"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": 92.79616242963277,
"release_spin_rate": 2525.323439420152,
"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.7962,
"release_spin_rate": 2525.3234,
"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.1642,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.173,
"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.0161,
"sample_weight": 1.0,
"run_prevention_factor": 0.9986,
"strikeout_factor": 1.0423,
"walk_factor": 1.03,
"homer_factor": 1.0712,
"woba_minus_xwoba": -0.001,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "691587",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 0.9986,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 0.9986,
"adjusted": 6
},
"predicted_BB": {
"original": 3.0,
"factor": 1.03,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0712,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0423,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 98,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by +12 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was -4."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260925_ATL@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"
}
} |
| 20260925 | 20260925_BAL@NYY | away | Trevor Rogers | Brandon Young | False | 6.1 | 5.0 | -4 | 1 | 1 | 0 | 4/2 | 3/3 | 3/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.0744466800804835,
"WHIP": 1.1830985915492958,
"IP": 165.2,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.713,
"recent_avg_IP": 6.6,
"last_start_IP": 8.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2779,
"sample_weight": 1.0,
"run_prevention_factor": 0.9764,
"strikeout_factor": 0.9983,
"walk_factor": 0.932,
"homer_factor": 0.9619,
"regression_flag": "neutral",
"k_percent": 22.4,
"bb_percent": 5.7,
"woba": 0.304,
"xwoba": 0.291,
"barrel_percent": 6.6,
"hard_hit_percent": 36.1,
"whiff_percent": 24.3
},
"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": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669432",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 33.0,
"ER": 14.0,
"R": 14.0,
"H": 29.0,
"BB": 3.0,
"SO": 39.0,
"HR": 5.0,
"BF": 126.0,
"Pitches": 478.0
},
"per_game": {
"IP": 6.2,
"ER": 2.8,
"R": 2.8,
"H": 5.8,
"BB": 0.6,
"SO": 7.8,
"HR": 1.0,
"BF": 25.2,
"Pitches": 95.6
},
"rates": {
"ERA": 3.8182,
"WHIP": 0.9697,
"ER_per_IP": 0.42424,
"H_per_IP": 0.87879,
"BB_per_IP": 0.09091,
"SO_per_IP": 1.18182,
"HR_per_IP": 0.15152
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 62.0,
"ER": 27.0,
"R": 30.0,
"H": 57.0,
"BB": 7.0,
"SO": 70.0,
"HR": 9.0,
"BF": 247.0,
"Pitches": 945.0
},
"per_game": {
"IP": 6.1,
"ER": 2.7,
"R": 3.0,
"H": 5.7,
"BB": 0.7,
"SO": 7.0,
"HR": 0.9,
"BF": 24.7,
"Pitches": 94.5
},
"rates": {
"ERA": 3.9194,
"WHIP": 1.0323,
"ER_per_IP": 0.43548,
"H_per_IP": 0.91935,
"BB_per_IP": 0.1129,
"SO_per_IP": 1.12903,
"HR_per_IP": 0.14516
}
},
"season": {
"games": 29,
"totals": {
"IP": 165.2,
"ER": 75.0,
"R": 80.0,
"H": 157.0,
"BB": 39.0,
"SO": 153.0,
"HR": 19.0,
"BF": 682.0,
"Pitches": 2634.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5862,
"R": 2.7586,
"H": 5.4138,
"BB": 1.3448,
"SO": 5.2759,
"HR": 0.6552,
"BF": 23.5172,
"Pitches": 90.8276
},
"rates": {
"ERA": 4.0744,
"WHIP": 1.1831,
"ER_per_IP": 0.45272,
"H_per_IP": 0.94769,
"BB_per_IP": 0.23541,
"SO_per_IP": 0.92354,
"HR_per_IP": 0.11469
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 2.828,
"predicted_H": 5.828,
"predicted_BB": 1.043,
"predicted_SO": 6.893,
"predicted_HR": 0.907,
"predicted_ERA": 4.0093,
"predicted_WHIP": 1.0825
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4121,
"form_weight": 0.5879,
"form_reliability": 0.8529,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"applied_metrics": {
"predicted_IP": {
"model": 6.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.828,
"final": 2.0746,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.828,
"final": 5.0746,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.043,
"final": 1.8496,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 6.893,
"final": 5.2885,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.907,
"final": 0.9453,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.0093,
"final": 4.0093,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0825,
"final": 1.0825,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 62.0,
"ER": 27,
"H": 57,
"BB": 7,
"SO": 70,
"HR": 9,
"ERA": 3.9193548387096775,
"WHIP": 1.032258064516129,
"K9": 10.161290322580646,
"HR9": 1.3064516129032258,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.9274741484296478,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669432",
"player_name": "Trevor Rogers",
"position": "Starter",
"team": "BAL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 6.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": 3.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 6.1,
"predicted_R": 1.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": 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.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"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": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 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.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"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": 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": "BAL",
"games": 159,
"wins": 78,
"losses": 81,
"win_pct": 0.4906,
"runs_scored": 705.0,
"runs_allowed": 731.0,
"run_differential": -26.0,
"run_differential_per_game": -0.1635,
"avg_runs_scored": 4.434,
"avg_runs_allowed": 4.5975,
"offense_index": 0.9874,
"defense_index": 0.9768,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 3.2,
"run_differential": 2.0
},
"available": true,
"quality_score": 0.007
},
"opponent": {
"team": "NYY",
"games": 159,
"wins": 92,
"losses": 67,
"win_pct": 0.5786,
"runs_scored": 731.0,
"runs_allowed": 588.0,
"run_differential": 143.0,
"run_differential_per_game": 0.8994,
"avg_runs_scored": 4.5975,
"avg_runs_allowed": 3.6981,
"offense_index": 1.0238,
"defense_index": 1.2143,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 3.6,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.212
},
"edges": {
"quality_edge": -0.205,
"offense_edge": -0.0126,
"opponent_offense_edge": 0.0238,
"defense_strength": -0.0232,
"opponent_defense_weakness": -0.2143,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9902,
"run_prevention": 1.0164,
"strikeout": 0.9919
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669432",
"profile": {
"available": true,
"pitcher_id": "669432",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 651.0,
"k_percent": 22.4,
"bb_percent": 5.7,
"woba": 0.304,
"xwoba": 0.291,
"sweet_spot_percent": 31.6,
"barrel_batted_rate": 6.6,
"hard_hit_percent": 36.1,
"avg_best_speed": 77.0056,
"avg_hyper_speed": 93.6766,
"whiff_percent": 24.3,
"swing_percent": 53.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3602,
"command_and_miss": 0.1607,
"regression_edge": 0.3714,
"xwoba_edge": 0.5714,
"barrel_edge": 0.1333,
"hard_hit_edge": 0.2571,
"whiff_edge": -0.1,
"bb_edge": 0.85,
"pitch_design_score": -0.0345
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669432",
"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": 89.24825957326814,
"release_spin_rate": 2207.9175662184966,
"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": 89.24825957326814,
"release_spin_rate": 2207.9175662184966,
"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.2483,
"release_spin_rate": 2207.9176,
"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.0345,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2462,
"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.2779,
"sample_weight": 1.0,
"run_prevention_factor": 0.9764,
"strikeout_factor": 0.9983,
"walk_factor": 0.932,
"homer_factor": 0.9619,
"woba_minus_xwoba": 0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669432",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9764,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.9764,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.932,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9619,
"adjusted": 1
},
"predicted_SO": {
"original": 7.0,
"factor": 0.9983,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 26,
"Pitches": 116,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "WRONG_STARTER",
"severity": "critical",
"title": "Wrong starter identity",
"detail": "The projected MLB player ID differs from the official starter ID; performance errors are not attributable to the projected player."
},
{
"code": "FALSE_CONFIRMATION",
"severity": "critical",
"title": "Confirmed flag was false assurance",
"detail": "The server marked this starter confirmed even though a different player started."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260925_BAL@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"
}
} |
| 20260925 | 20260925_BAL@NYY | home | Brendan Beck | Ryan Yarbrough | False | 3.0 | 2.1 | -2 | 1 | 0 | -1 | 2/4 | 4/1 | 7/5 | Last 10 before this game (3 available){
"model_context": {
"embedded_season": {
"ERA": 8.217391304347826,
"WHIP": 1.5652173913043477,
"IP": 7.2,
"games_started": null,
"games_pitched": 3,
"role_avg_IP": 3.667,
"recent_avg_IP": 3.667,
"last_start_IP": 3.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.6184,
"sample_weight": 0.45,
"run_prevention_factor": 1.0526,
"strikeout_factor": 1.0026,
"walk_factor": 1.0504,
"homer_factor": 1.1687,
"regression_flag": "neutral",
"k_percent": 14.7,
"bb_percent": 14.7,
"woba": 0.444,
"xwoba": 0.435,
"barrel_percent": 25.0,
"hard_hit_percent": 62.5,
"whiff_percent": 33.3
},
"espn_rank": {
"rank": 667,
"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": 1.569,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2389,
"prior_weight": 0.7611
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "694341",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 3,
"reference_playing_time": 4.0,
"windows": {
"last_5": {
"games": 3,
"totals": {
"IP": 7.2,
"ER": 7.0,
"R": 7.0,
"H": 7.0,
"BB": 5.0,
"SO": 5.0,
"HR": 4.0,
"BF": 34.0,
"Pitches": 149.0
},
"per_game": {
"IP": 2.2,
"ER": 2.3333,
"R": 2.3333,
"H": 2.3333,
"BB": 1.6667,
"SO": 1.6667,
"HR": 1.3333,
"BF": 11.3333,
"Pitches": 49.6667
},
"rates": {
"ERA": 8.2174,
"WHIP": 1.5652,
"ER_per_IP": 0.91304,
"H_per_IP": 0.91304,
"BB_per_IP": 0.65217,
"SO_per_IP": 0.65217,
"HR_per_IP": 0.52174
}
},
"last_10": {
"games": 3,
"totals": {
"IP": 7.2,
"ER": 7.0,
"R": 7.0,
"H": 7.0,
"BB": 5.0,
"SO": 5.0,
"HR": 4.0,
"BF": 34.0,
"Pitches": 149.0
},
"per_game": {
"IP": 2.2,
"ER": 2.3333,
"R": 2.3333,
"H": 2.3333,
"BB": 1.6667,
"SO": 1.6667,
"HR": 1.3333,
"BF": 11.3333,
"Pitches": 49.6667
},
"rates": {
"ERA": 8.2174,
"WHIP": 1.5652,
"ER_per_IP": 0.91304,
"H_per_IP": 0.91304,
"BB_per_IP": 0.65217,
"SO_per_IP": 0.65217,
"HR_per_IP": 0.52174
}
},
"season": {
"games": 3,
"totals": {
"IP": 7.2,
"ER": 7.0,
"R": 7.0,
"H": 7.0,
"BB": 5.0,
"SO": 5.0,
"HR": 4.0,
"BF": 34.0,
"Pitches": 149.0
},
"per_game": {
"IP": 2.2,
"ER": 2.3333,
"R": 2.3333,
"H": 2.3333,
"BB": 1.6667,
"SO": 1.6667,
"HR": 1.3333,
"BF": 11.3333,
"Pitches": 49.6667
},
"rates": {
"ERA": 8.2174,
"WHIP": 1.5652,
"ER_per_IP": 0.91304,
"H_per_IP": 0.91304,
"BB_per_IP": 0.65217,
"SO_per_IP": 0.65217,
"HR_per_IP": 0.52174
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.2,
"predicted_ER": 2.24,
"predicted_H": 3.561,
"predicted_BB": 1.632,
"predicted_SO": 3.198,
"predicted_HR": 0.876,
"predicted_ERA": 5.4757,
"predicted_WHIP": 1.4106
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.6716,
"form_weight": 0.3284,
"form_reliability": 0.2389,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 1.569,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2389,
"prior_weight": 0.7611
},
"applied_metrics": {
"predicted_IP": {
"model": 4.0,
"form": 3.2,
"final": 4.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.24,
"final": 1.4073,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 3.561,
"final": 2.5127,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.632,
"final": 3.2223,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 3.198,
"final": 5.7513,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.876,
"final": 0.9593,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.4757,
"final": 5.4757,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4106,
"final": 1.4106,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 7.2,
"ER": 7,
"H": 7,
"BB": 5,
"SO": 5,
"HR": 4,
"ERA": 8.217391304347826,
"WHIP": 1.565217391304348,
"K9": 5.869565217391305,
"HR9": 4.695652173913044,
"games_pitched": 3,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 3,
"error_prone": false
},
"games_count": 3,
"latest_game_date": "2026-08-29T00:00:00"
},
"recent_form_boost": 1.1081784685618115,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_BB": 4.0,
"predicted_SO": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 1.569,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.2389,
"prior_weight": 0.7611
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 3.0,
"predicted_ER": 1,
"predicted_H": 2,
"predicted_BB": 4,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "694341",
"player_name": "Brendan Beck",
"position": "Starter",
"team": "NYY",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.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": 4.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 3.0,
"predicted_R": 1.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 3.0,
"after": 3.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": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYY",
"games": 159,
"wins": 92,
"losses": 67,
"win_pct": 0.5786,
"runs_scored": 731.0,
"runs_allowed": 588.0,
"run_differential": 143.0,
"run_differential_per_game": 0.8994,
"avg_runs_scored": 4.5975,
"avg_runs_allowed": 3.6981,
"offense_index": 1.0238,
"defense_index": 1.2143,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 3.6,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.212
},
"opponent": {
"team": "BAL",
"games": 159,
"wins": 78,
"losses": 81,
"win_pct": 0.4906,
"runs_scored": 705.0,
"runs_allowed": 731.0,
"run_differential": -26.0,
"run_differential_per_game": -0.1635,
"avg_runs_scored": 4.434,
"avg_runs_allowed": 4.5975,
"offense_index": 0.9874,
"defense_index": 0.9768,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 3.2,
"run_differential": 2.0
},
"available": true,
"quality_score": 0.007
},
"edges": {
"quality_edge": 0.205,
"offense_edge": 0.0238,
"opponent_offense_edge": -0.0126,
"defense_strength": 0.2143,
"opponent_defense_weakness": 0.0232,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0151,
"run_prevention": 0.9663,
"strikeout": 1.0072
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "694341",
"profile": {
"available": true,
"pitcher_id": "694341",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 31.0,
"k_percent": 14.7,
"bb_percent": 14.7,
"woba": 0.444,
"xwoba": 0.435,
"sweet_spot_percent": 58.3,
"barrel_batted_rate": 25.0,
"hard_hit_percent": 62.5,
"avg_best_speed": 86.3721,
"avg_hyper_speed": 97.4373,
"whiff_percent": 33.3,
"swing_percent": 42.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -2.3293,
"command_and_miss": -0.3343,
"regression_edge": 0.2571,
"xwoba_edge": -2.5,
"barrel_edge": -2.5,
"hard_hit_edge": -2.5,
"whiff_edge": 1.1857,
"bb_edge": -1.4,
"pitch_design_score": -0.109
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "694341",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 69,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 69,
"pitch_usage": 0.0,
"release_speed": 87.9177608311229,
"release_spin_rate": 2129.730437665782,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 69,
"pitch_usage": 0.0,
"release_speed": 87.9177608311229,
"release_spin_rate": 2129.730437665782,
"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.9178,
"release_spin_rate": 2129.7304,
"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.109,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.7784,
"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.6184,
"sample_weight": 0.45,
"run_prevention_factor": 1.0526,
"strikeout_factor": 1.0026,
"walk_factor": 1.0504,
"homer_factor": 1.1687,
"woba_minus_xwoba": 0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "694341",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 5.0,
"factor": 1.0237,
"adjusted": 5
},
"predicted_H": {
"original": 5.0,
"factor": 1.0237,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0227,
"adjusted": 2
},
"predicted_HR": {
"original": 3.0,
"factor": 1.0759,
"adjusted": 3
},
"predicted_SO": {
"original": 3.0,
"factor": 1.0012,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 3.0,
"predicted_H": 2,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 4,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 15,
"Pitches": 72,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "WRONG_STARTER",
"severity": "critical",
"title": "Wrong starter identity",
"detail": "The projected MLB player ID differs from the official starter ID; performance errors are not attributable to the projected player."
},
{
"code": "FALSE_CONFIRMATION",
"severity": "critical",
"title": "Confirmed flag was false assurance",
"detail": "The server marked this starter confirmed even though a different player started."
},
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 3 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
}
],
"provenance": {
"prediction": "output/games/20260925_BAL@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"
}
} |
| 20260925 | 20260925_CHC@BOS | away | Clay Holmes | David Peterson | False | 5.2 | 5.0 | -2 | 2 | 0 | -2 | 2/3 | 3/2 | 7/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.247422680412371,
"WHIP": 1.1649484536082475,
"IP": 97.0,
"games_started": null,
"games_pitched": 17,
"role_avg_IP": 5.706,
"recent_avg_IP": 5.667,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0148,
"sample_weight": 1.0,
"run_prevention_factor": 0.9987,
"strikeout_factor": 0.9651,
"walk_factor": 1.014,
"homer_factor": 0.9607,
"regression_flag": "negative_pitcher_regression",
"k_percent": 18.8,
"bb_percent": 9.8,
"woba": 0.268,
"xwoba": 0.304,
"barrel_percent": 4.3,
"hard_hit_percent": 41.1,
"whiff_percent": 22.1
},
"espn_rank": {
"rank": 82,
"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": 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": "605280",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 17,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.1,
"ER": 16.0,
"R": 17.0,
"H": 21.0,
"BB": 16.0,
"SO": 25.0,
"HR": 2.0,
"BF": 121.0,
"Pitches": 471.0
},
"per_game": {
"IP": 5.2,
"ER": 3.2,
"R": 3.4,
"H": 4.2,
"BB": 3.2,
"SO": 5.0,
"HR": 0.4,
"BF": 24.2,
"Pitches": 94.2
},
"rates": {
"ERA": 5.0824,
"WHIP": 1.3059,
"ER_per_IP": 0.56471,
"H_per_IP": 0.74118,
"BB_per_IP": 0.56471,
"SO_per_IP": 0.88235,
"HR_per_IP": 0.07059
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.1,
"ER": 27.0,
"R": 28.0,
"H": 46.0,
"BB": 25.0,
"SO": 44.0,
"HR": 3.0,
"BF": 231.0,
"Pitches": 905.0
},
"per_game": {
"IP": 5.1,
"ER": 2.7,
"R": 2.8,
"H": 4.6,
"BB": 2.5,
"SO": 4.4,
"HR": 0.3,
"BF": 23.1,
"Pitches": 90.5
},
"rates": {
"ERA": 4.4724,
"WHIP": 1.3067,
"ER_per_IP": 0.49693,
"H_per_IP": 0.84663,
"BB_per_IP": 0.46012,
"SO_per_IP": 0.80982,
"HR_per_IP": 0.05521
}
},
"season": {
"games": 17,
"totals": {
"IP": 97.0,
"ER": 35.0,
"R": 36.0,
"H": 74.0,
"BB": 39.0,
"SO": 75.0,
"HR": 6.0,
"BF": 399.0,
"Pitches": 1535.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0588,
"R": 2.1176,
"H": 4.3529,
"BB": 2.2941,
"SO": 4.4118,
"HR": 0.3529,
"BF": 23.4706,
"Pitches": 90.2941
},
"rates": {
"ERA": 3.2474,
"WHIP": 1.1649,
"ER_per_IP": 0.36082,
"H_per_IP": 0.76289,
"BB_per_IP": 0.40206,
"SO_per_IP": 0.7732,
"HR_per_IP": 0.06186
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.805,
"predicted_H": 4.619,
"predicted_BB": 2.614,
"predicted_SO": 4.786,
"predicted_HR": 0.462,
"predicted_ERA": 4.5276,
"predicted_WHIP": 1.2971
}
},
"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.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.805,
"final": 2.4459,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.619,
"final": 3.4508,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.614,
"final": 2.7862,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.786,
"final": 5.7735,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.462,
"final": 0.2559,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5276,
"final": 4.5276,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2971,
"final": 1.2971,
"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": 27,
"H": 46,
"BB": 25,
"SO": 44,
"HR": 3,
"ERA": 4.47239263803681,
"WHIP": 1.3067484662576687,
"K9": 7.288343558282209,
"HR9": 0.49693251533742333,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 0.9965531608974887,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 3.0,
"predicted_SO": 7.0,
"predicted_HR": 0.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": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 2,
"predicted_H": 2,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "605280",
"player_name": "Clay Holmes",
"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.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"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": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 2.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CHC",
"games": 159,
"wins": 88,
"losses": 71,
"win_pct": 0.5535,
"runs_scored": 841.0,
"runs_allowed": 695.0,
"run_differential": 146.0,
"run_differential_per_game": 0.9182,
"avg_runs_scored": 5.2893,
"avg_runs_allowed": 4.3711,
"offense_index": 1.1777,
"defense_index": 1.0275,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 3.8,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.1579
},
"opponent": {
"team": "BOS",
"games": 159,
"wins": 85,
"losses": 74,
"win_pct": 0.5346,
"runs_scored": 681.0,
"runs_allowed": 602.0,
"run_differential": 79.0,
"run_differential_per_game": 0.4969,
"avg_runs_scored": 4.283,
"avg_runs_allowed": 3.7862,
"offense_index": 0.9536,
"defense_index": 1.1863,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.2,
"avg_runs_allowed": 2.8,
"run_differential": -6.0
},
"available": true,
"quality_score": 0.0553
},
"edges": {
"quality_edge": 0.1026,
"offense_edge": 0.1777,
"opponent_offense_edge": -0.0464,
"defense_strength": 0.0275,
"opponent_defense_weakness": -0.1863,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0068,
"run_prevention": 0.9847,
"strikeout": 1.0068
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "605280",
"profile": {
"available": true,
"pitcher_id": "605280",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 374.0,
"k_percent": 18.8,
"bb_percent": 9.8,
"woba": 0.268,
"xwoba": 0.304,
"sweet_spot_percent": 27.0,
"barrel_batted_rate": 4.3,
"hard_hit_percent": 41.1,
"avg_best_speed": 78.989,
"avg_hyper_speed": 94.1735,
"whiff_percent": 22.1,
"swing_percent": 45.7
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.398,
"command_and_miss": -0.3857,
"regression_edge": -1.0286,
"xwoba_edge": 0.2,
"barrel_edge": 0.6444,
"hard_hit_edge": -0.4571,
"whiff_edge": -0.4143,
"bb_edge": -0.175,
"pitch_design_score": -0.0616
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "605280",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 92,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 88.76414929025393,
"release_spin_rate": 2158.927352212928,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 88.76414929025393,
"release_spin_rate": 2158.927352212928,
"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.7641,
"release_spin_rate": 2158.9274,
"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.0616,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4398,
"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.0148,
"sample_weight": 1.0,
"run_prevention_factor": 0.9987,
"strikeout_factor": 0.9651,
"walk_factor": 1.014,
"homer_factor": 0.9607,
"woba_minus_xwoba": -0.036,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "605280",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9987,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 0.9987,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.014,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9607,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9651,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 101,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "WRONG_STARTER",
"severity": "critical",
"title": "Wrong starter identity",
"detail": "The projected MLB player ID differs from the official starter ID; performance errors are not attributable to the projected player."
},
{
"code": "FALSE_CONFIRMATION",
"severity": "critical",
"title": "Confirmed flag was false assurance",
"detail": "The server marked this starter confirmed even though a different player started."
},
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260925_CHC@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"
}
} |
| 20260925 | 20260925_CHC@BOS | home | Alec Gamboa | Brayan Bello | False | 5.0 | 4.0 | -3 | 2 | 0 | -2 | 3/4 | 4/1 | 4/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 1.1612903225806452,
"WHIP": 1.064516129032258,
"IP": 31.0,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 1.333,
"recent_avg_IP": 1.333,
"last_start_IP": 1.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1735,
"sample_weight": 0.45,
"run_prevention_factor": 0.9853,
"strikeout_factor": 0.9702,
"walk_factor": 0.9928,
"homer_factor": 0.9488,
"regression_flag": "neutral",
"k_percent": 18.2,
"bb_percent": 8.3,
"woba": 0.269,
"xwoba": 0.26,
"barrel_percent": 2.3,
"hard_hit_percent": 40.9,
"whiff_percent": 17.2
},
"espn_rank": {
"rank": 202,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 31.0,
"season_ERA": 1.161,
"season_WHIP": 1.065,
"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": 6.346,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5593,
"prior_weight": 0.4407
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "687941",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 5.0,
"ER": 1.0,
"R": 1.0,
"H": 6.0,
"BB": 3.0,
"SO": 4.0,
"HR": 0.0,
"BF": 21.0,
"Pitches": 78.0
},
"per_game": {
"IP": 1.0,
"ER": 0.2,
"R": 0.2,
"H": 1.2,
"BB": 0.6,
"SO": 0.8,
"HR": 0.0,
"BF": 4.2,
"Pitches": 15.6
},
"rates": {
"ERA": 1.8,
"WHIP": 1.8,
"ER_per_IP": 0.2,
"H_per_IP": 1.2,
"BB_per_IP": 0.6,
"SO_per_IP": 0.8,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 12.2,
"ER": 1.0,
"R": 1.0,
"H": 9.0,
"BB": 5.0,
"SO": 9.0,
"HR": 0.0,
"BF": 49.0,
"Pitches": 177.0
},
"per_game": {
"IP": 1.1,
"ER": 0.1,
"R": 0.1,
"H": 0.9,
"BB": 0.5,
"SO": 0.9,
"HR": 0.0,
"BF": 4.9,
"Pitches": 17.7
},
"rates": {
"ERA": 0.7105,
"WHIP": 1.1053,
"ER_per_IP": 0.07895,
"H_per_IP": 0.71053,
"BB_per_IP": 0.39474,
"SO_per_IP": 0.71053,
"HR_per_IP": 0.0
}
},
"season": {
"games": 20,
"totals": {
"IP": 31.0,
"ER": 4.0,
"R": 5.0,
"H": 23.0,
"BB": 10.0,
"SO": 22.0,
"HR": 1.0,
"BF": 121.0,
"Pitches": 426.0
},
"per_game": {
"IP": 1.2,
"ER": 0.2,
"R": 0.25,
"H": 1.15,
"BB": 0.5,
"SO": 1.1,
"HR": 0.05,
"BF": 6.05,
"Pitches": 21.3
},
"rates": {
"ERA": 1.1613,
"WHIP": 1.0645,
"ER_per_IP": 0.12903,
"H_per_IP": 0.74194,
"BB_per_IP": 0.32258,
"SO_per_IP": 0.70968,
"HR_per_IP": 0.03226
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.0,
"predicted_ER": 0.889,
"predicted_H": 2.78,
"predicted_BB": 1.251,
"predicted_SO": 2.417,
"predicted_HR": 0.201,
"predicted_ERA": 2.7559,
"predicted_WHIP": 1.3887
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5362,
"form_weight": 0.4638,
"form_reliability": 0.5593,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.346,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5593,
"prior_weight": 0.4407
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 3.0,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 0.889,
"final": 2.0209,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 2.78,
"final": 2.898,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.251,
"final": 2.725,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 2.417,
"final": 3.2658,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.201,
"final": 0.0932,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.7559,
"final": 2.7559,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3887,
"final": 1.3887,
"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": 12.2,
"ER": 1,
"H": 9,
"BB": 5,
"SO": 9,
"HR": 0,
"ERA": 0.7105263157894737,
"WHIP": 1.105263157894737,
"K9": 6.394736842105264,
"HR9": 0.0,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-22T00:00:00"
},
"recent_form_boost": 0.8181674503322167,
"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": 3.0,
"predicted_BB": 4.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.346,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5593,
"prior_weight": 0.4407
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 3,
"predicted_BB": 4,
"predicted_SO": 4,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "687941",
"player_name": "Alec Gamboa",
"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": 4.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BOS",
"games": 159,
"wins": 85,
"losses": 74,
"win_pct": 0.5346,
"runs_scored": 681.0,
"runs_allowed": 602.0,
"run_differential": 79.0,
"run_differential_per_game": 0.4969,
"avg_runs_scored": 4.283,
"avg_runs_allowed": 3.7862,
"offense_index": 0.9536,
"defense_index": 1.1863,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.2,
"avg_runs_allowed": 2.8,
"run_differential": -6.0
},
"available": true,
"quality_score": 0.0553
},
"opponent": {
"team": "CHC",
"games": 159,
"wins": 88,
"losses": 71,
"win_pct": 0.5535,
"runs_scored": 841.0,
"runs_allowed": 695.0,
"run_differential": 146.0,
"run_differential_per_game": 0.9182,
"avg_runs_scored": 5.2893,
"avg_runs_allowed": 4.3711,
"offense_index": 1.1777,
"defense_index": 1.0275,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 3.8,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.1579
},
"edges": {
"quality_edge": -0.1026,
"offense_edge": -0.0464,
"opponent_offense_edge": 0.1777,
"defense_strength": 0.1863,
"opponent_defense_weakness": -0.0275,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9944,
"run_prevention": 1.0149,
"strikeout": 0.9827
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "687941",
"profile": {
"available": true,
"pitcher_id": "687941",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 109.0,
"k_percent": 18.2,
"bb_percent": 8.3,
"woba": 0.269,
"xwoba": 0.26,
"sweet_spot_percent": 30.7,
"barrel_batted_rate": 2.3,
"hard_hit_percent": 40.9,
"avg_best_speed": 80.5282,
"avg_hyper_speed": 94.5564,
"whiff_percent": 17.2,
"swing_percent": 51.9
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.8963,
"command_and_miss": -0.5943,
"regression_edge": 0.2571,
"xwoba_edge": 1.4571,
"barrel_edge": 1.0889,
"hard_hit_edge": -0.4286,
"whiff_edge": -1.1143,
"bb_edge": 0.2,
"pitch_design_score": 0.1543
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687941",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 14,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 14,
"pitch_usage": 0.0,
"release_speed": 92.61910302178109,
"release_spin_rate": 2102.104436620148,
"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": 14,
"pitch_usage": 0.0,
"release_speed": 92.61910302178109,
"release_spin_rate": 2102.104436620148,
"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.6191,
"release_spin_rate": 2102.1044,
"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.1543,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1022,
"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.1735,
"sample_weight": 0.45,
"run_prevention_factor": 0.9853,
"strikeout_factor": 0.9702,
"walk_factor": 0.9928,
"homer_factor": 0.9488,
"woba_minus_xwoba": 0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "687941",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 0.0,
"factor": 0.9934,
"adjusted": 0
},
"predicted_H": {
"original": 2.0,
"factor": 0.9934,
"adjusted": 2
},
"predicted_BB": {
"original": 0.0,
"factor": 0.9968,
"adjusted": 0
},
"predicted_HR": {
"original": 0.0,
"factor": 0.977,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9866,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 4,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 100,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "WRONG_STARTER",
"severity": "critical",
"title": "Wrong starter identity",
"detail": "The projected MLB player ID differs from the official starter ID; performance errors are not attributable to the projected player."
},
{
"code": "FALSE_CONFIRMATION",
"severity": "critical",
"title": "Confirmed flag was false assurance",
"detail": "The server marked this starter confirmed even though a different player started."
},
{
"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/20260925_CHC@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"
}
} |
| 20260925 | 20260925_CIN@TOR | away | Nick Lodolo | Nick Lodolo | True | 5.0 | 5.0 | 0 | 2 | 2 | 0 | 4/7 | 1/2 | 5/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.035369774919614,
"WHIP": 1.4662379421221865,
"IP": 103.2,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 5.183,
"recent_avg_IP": 5.733,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.8407,
"sample_weight": 1.0,
"run_prevention_factor": 1.0715,
"strikeout_factor": 0.952,
"walk_factor": 1.008,
"homer_factor": 1.1163,
"regression_flag": "neutral",
"k_percent": 17.3,
"bb_percent": 9.5,
"woba": 0.371,
"xwoba": 0.379,
"barrel_percent": 9.5,
"hard_hit_percent": 40.9,
"whiff_percent": 21.3
},
"espn_rank": {
"rank": 188,
"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": "666157",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.2,
"ER": 16.0,
"R": 16.0,
"H": 25.0,
"BB": 13.0,
"SO": 21.0,
"HR": 7.0,
"BF": 124.0,
"Pitches": 486.0
},
"per_game": {
"IP": 5.2,
"ER": 3.2,
"R": 3.2,
"H": 5.0,
"BB": 2.6,
"SO": 4.2,
"HR": 1.4,
"BF": 24.8,
"Pitches": 97.2
},
"rates": {
"ERA": 5.0233,
"WHIP": 1.3256,
"ER_per_IP": 0.55814,
"H_per_IP": 0.87209,
"BB_per_IP": 0.45349,
"SO_per_IP": 0.73256,
"HR_per_IP": 0.24419
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.0,
"ER": 29.0,
"R": 29.0,
"H": 54.0,
"BB": 22.0,
"SO": 38.0,
"HR": 12.0,
"BF": 231.0,
"Pitches": 895.0
},
"per_game": {
"IP": 5.1,
"ER": 2.9,
"R": 2.9,
"H": 5.4,
"BB": 2.2,
"SO": 3.8,
"HR": 1.2,
"BF": 23.1,
"Pitches": 89.5
},
"rates": {
"ERA": 5.0192,
"WHIP": 1.4615,
"ER_per_IP": 0.55769,
"H_per_IP": 1.03846,
"BB_per_IP": 0.42308,
"SO_per_IP": 0.73077,
"HR_per_IP": 0.23077
}
},
"season": {
"games": 20,
"totals": {
"IP": 103.2,
"ER": 58.0,
"R": 58.0,
"H": 108.0,
"BB": 44.0,
"SO": 80.0,
"HR": 20.0,
"BF": 462.0,
"Pitches": 1807.0
},
"per_game": {
"IP": 5.1,
"ER": 2.9,
"R": 2.9,
"H": 5.4,
"BB": 2.2,
"SO": 4.0,
"HR": 1.0,
"BF": 23.1,
"Pitches": 90.35
},
"rates": {
"ERA": 5.0354,
"WHIP": 1.4662,
"ER_per_IP": 0.55949,
"H_per_IP": 1.0418,
"BB_per_IP": 0.42444,
"SO_per_IP": 0.7717,
"HR_per_IP": 0.19293
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 3.031,
"predicted_H": 5.345,
"predicted_BB": 2.347,
"predicted_SO": 4.301,
"predicted_HR": 1.177,
"predicted_ERA": 4.9424,
"predicted_WHIP": 1.3934
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4345,
"form_weight": 0.5655,
"form_reliability": 0.8,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 3.031,
"final": 2.583,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.345,
"final": 4.7606,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.347,
"final": 1.7617,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.301,
"final": 4.6047,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.177,
"final": 1.1001,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.9424,
"final": 4.9424,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3934,
"final": 1.3934,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 52.0,
"ER": 29,
"H": 54,
"BB": 22,
"SO": 38,
"HR": 12,
"ERA": 5.019230769230769,
"WHIP": 1.4615384615384615,
"K9": 6.576923076923077,
"HR9": 2.076923076923077,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 1.061942200538829,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "666157",
"player_name": "Nick Lodolo",
"position": "Starter",
"team": "CIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CIN",
"games": 159,
"wins": 74,
"losses": 85,
"win_pct": 0.4654,
"runs_scored": 655.0,
"runs_allowed": 814.0,
"run_differential": -159.0,
"run_differential_per_game": -1.0,
"avg_runs_scored": 4.1195,
"avg_runs_allowed": 5.1195,
"offense_index": 0.9206,
"defense_index": 0.8741,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 4.5,
"run_differential": -14.0
},
"available": true,
"quality_score": -0.1873
},
"opponent": {
"team": "TOR",
"games": 159,
"wins": 77,
"losses": 82,
"win_pct": 0.4843,
"runs_scored": 636.0,
"runs_allowed": 683.0,
"run_differential": -47.0,
"run_differential_per_game": -0.2956,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.2956,
"offense_index": 0.8939,
"defense_index": 1.0418,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 4.5,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.1197
},
"edges": {
"quality_edge": -0.0676,
"offense_edge": -0.0794,
"opponent_offense_edge": -0.1061,
"defense_strength": -0.1259,
"opponent_defense_weakness": -0.0418,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9978,
"run_prevention": 0.999,
"strikeout": 1.0065
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "666157",
"profile": {
"available": true,
"pitcher_id": "666157",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 424.0,
"k_percent": 17.3,
"bb_percent": 9.5,
"woba": 0.371,
"xwoba": 0.379,
"sweet_spot_percent": 37.2,
"barrel_batted_rate": 9.5,
"hard_hit_percent": 40.9,
"avg_best_speed": 79.3897,
"avg_hyper_speed": 94.6818,
"whiff_percent": 21.3,
"swing_percent": 45.5
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -1.2235,
"command_and_miss": -0.5071,
"regression_edge": -0.2286,
"xwoba_edge": -1.9429,
"barrel_edge": -0.5111,
"hard_hit_edge": -0.4286,
"whiff_edge": -0.5286,
"bb_edge": -0.1,
"pitch_design_score": -0.01
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "666157",
"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": 89.68483136256282,
"release_spin_rate": 2271.767796156934,
"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": 89.68483136256282,
"release_spin_rate": 2271.767796156934,
"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.6848,
"release_spin_rate": 2271.7678,
"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.0715,
"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.8407,
"sample_weight": 1.0,
"run_prevention_factor": 1.0715,
"strikeout_factor": 0.952,
"walk_factor": 1.008,
"homer_factor": 1.1163,
"woba_minus_xwoba": -0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "666157",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0715,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0715,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 1.008,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1163,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.952,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 20,
"Pitches": 79,
"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/20260925_CIN@TOR.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_CIN@TOR | home | José Soriano | José Soriano | True | 6.0 | 3.0 | -9 | 3 | 5 | 2 | 4/8 | 1/0 | 6/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.7170172084130018,
"WHIP": 1.2619502868068833,
"IP": 174.1,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.624,
"recent_avg_IP": 6.0,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0113,
"sample_weight": 1.0,
"run_prevention_factor": 0.999,
"strikeout_factor": 1.0269,
"walk_factor": 1.018,
"homer_factor": 1.0058,
"regression_flag": "neutral",
"k_percent": 22.9,
"bb_percent": 10.0,
"woba": 0.296,
"xwoba": 0.321,
"barrel_percent": 7.3,
"hard_hit_percent": 37.1,
"whiff_percent": 28.8
},
"espn_rank": {
"rank": null,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "667755",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 17.0,
"R": 18.0,
"H": 26.0,
"BB": 8.0,
"SO": 24.0,
"HR": 4.0,
"BF": 126.0,
"Pitches": 451.0
},
"per_game": {
"IP": 6.0,
"ER": 3.4,
"R": 3.6,
"H": 5.2,
"BB": 1.6,
"SO": 4.8,
"HR": 0.8,
"BF": 25.2,
"Pitches": 90.2
},
"rates": {
"ERA": 5.1,
"WHIP": 1.1333,
"ER_per_IP": 0.56667,
"H_per_IP": 0.86667,
"BB_per_IP": 0.26667,
"SO_per_IP": 0.8,
"HR_per_IP": 0.13333
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 56.1,
"ER": 27.0,
"R": 30.0,
"H": 53.0,
"BB": 19.0,
"SO": 45.0,
"HR": 5.0,
"BF": 238.0,
"Pitches": 911.0
},
"per_game": {
"IP": 5.2,
"ER": 2.7,
"R": 3.0,
"H": 5.3,
"BB": 1.9,
"SO": 4.5,
"HR": 0.5,
"BF": 23.8,
"Pitches": 91.1
},
"rates": {
"ERA": 4.3136,
"WHIP": 1.2781,
"ER_per_IP": 0.47929,
"H_per_IP": 0.94083,
"BB_per_IP": 0.33728,
"SO_per_IP": 0.79882,
"HR_per_IP": 0.08876
}
},
"season": {
"games": 31,
"totals": {
"IP": 174.1,
"ER": 72.0,
"R": 78.0,
"H": 147.0,
"BB": 73.0,
"SO": 167.0,
"HR": 17.0,
"BF": 729.0,
"Pitches": 2868.0
},
"per_game": {
"IP": 5.2,
"ER": 2.3226,
"R": 2.5161,
"H": 4.7419,
"BB": 2.3548,
"SO": 5.3871,
"HR": 0.5484,
"BF": 23.5161,
"Pitches": 92.5161
},
"rates": {
"ERA": 3.717,
"WHIP": 1.262,
"ER_per_IP": 0.413,
"H_per_IP": 0.84321,
"BB_per_IP": 0.41874,
"SO_per_IP": 0.95793,
"HR_per_IP": 0.09751
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.958,
"predicted_H": 5.266,
"predicted_BB": 1.926,
"predicted_SO": 4.941,
"predicted_HR": 0.677,
"predicted_ERA": 4.5575,
"predicted_WHIP": 1.2309
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.958,
"final": 2.9752,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.266,
"final": 4.7486,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.926,
"final": 1.5476,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.941,
"final": 5.3738,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.677,
"final": 0.809,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5575,
"final": 4.5575,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2309,
"final": 1.2309,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 56.1,
"ER": 27,
"H": 53,
"BB": 19,
"SO": 45,
"HR": 5,
"ERA": 4.313609467455621,
"WHIP": 1.2781065088757395,
"K9": 7.189349112426036,
"HR9": 0.7988165680473372,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.9779740052725567,
"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": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "667755",
"player_name": "Jos\u00e9 Soriano",
"position": "Starter",
"team": "TOR",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 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": "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": 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": 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": 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": 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": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TOR",
"games": 159,
"wins": 77,
"losses": 82,
"win_pct": 0.4843,
"runs_scored": 636.0,
"runs_allowed": 683.0,
"run_differential": -47.0,
"run_differential_per_game": -0.2956,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.2956,
"offense_index": 0.8939,
"defense_index": 1.0418,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 4.5,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.1197
},
"opponent": {
"team": "CIN",
"games": 159,
"wins": 74,
"losses": 85,
"win_pct": 0.4654,
"runs_scored": 655.0,
"runs_allowed": 814.0,
"run_differential": -159.0,
"run_differential_per_game": -1.0,
"avg_runs_scored": 4.1195,
"avg_runs_allowed": 5.1195,
"offense_index": 0.9206,
"defense_index": 0.8741,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 4.5,
"run_differential": -14.0
},
"available": true,
"quality_score": -0.1873
},
"edges": {
"quality_edge": 0.0676,
"offense_edge": -0.1061,
"opponent_offense_edge": -0.0794,
"defense_strength": 0.0418,
"opponent_defense_weakness": 0.1259,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0071,
"run_prevention": 0.9797,
"strikeout": 1.0084
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "667755",
"profile": {
"available": true,
"pitcher_id": "667755",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 700.0,
"k_percent": 22.9,
"bb_percent": 10.0,
"woba": 0.296,
"xwoba": 0.321,
"sweet_spot_percent": 30.4,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.1,
"avg_best_speed": 77.0674,
"avg_hyper_speed": 93.913,
"whiff_percent": 28.8,
"swing_percent": 46.7
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0314,
"command_and_miss": 0.2029,
"regression_edge": -0.7143,
"xwoba_edge": -0.2857,
"barrel_edge": -0.0222,
"hard_hit_edge": 0.1143,
"whiff_edge": 0.5429,
"bb_edge": -0.225,
"pitch_design_score": 0.1549
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "667755",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 94,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 92.6295640052384,
"release_spin_rate": 2055.298636966367,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 92.6295640052384,
"release_spin_rate": 2055.298636966367,
"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.6296,
"release_spin_rate": 2055.2986,
"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.1549,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1064,
"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.0113,
"sample_weight": 1.0,
"run_prevention_factor": 0.999,
"strikeout_factor": 1.0269,
"walk_factor": 1.018,
"homer_factor": 1.0058,
"woba_minus_xwoba": -0.025,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "667755",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.999,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.999,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.018,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0058,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0269,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 99,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was +2."
},
{
"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": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was +4."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260925_CIN@TOR.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_CLE@KC | away | Gavin Williams | Gavin Williams | True | 5.2 | 3.1 | -7 | 3 | 4 | 1 | 3/5 | 0/4 | 8/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6298342541436464,
"WHIP": 1.0828729281767955,
"IP": 181.0,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.839,
"recent_avg_IP": 5.267,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.262,
"sample_weight": 1.0,
"run_prevention_factor": 0.9777,
"strikeout_factor": 1.1126,
"walk_factor": 0.974,
"homer_factor": 1.1135,
"regression_flag": "neutral",
"k_percent": 33.5,
"bb_percent": 7.8,
"woba": 0.289,
"xwoba": 0.299,
"barrel_percent": 11.4,
"hard_hit_percent": 46.5,
"whiff_percent": 33.2
},
"espn_rank": {
"rank": 29,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "668909",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.1,
"ER": 9.0,
"R": 10.0,
"H": 19.0,
"BB": 9.0,
"SO": 43.0,
"HR": 2.0,
"BF": 107.0,
"Pitches": 460.0
},
"per_game": {
"IP": 5.1,
"ER": 1.8,
"R": 2.0,
"H": 3.8,
"BB": 1.8,
"SO": 8.6,
"HR": 0.4,
"BF": 21.4,
"Pitches": 92.0
},
"rates": {
"ERA": 3.0759,
"WHIP": 1.0633,
"ER_per_IP": 0.34177,
"H_per_IP": 0.72152,
"BB_per_IP": 0.34177,
"SO_per_IP": 1.63291,
"HR_per_IP": 0.07595
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.2,
"ER": 20.0,
"R": 21.0,
"H": 37.0,
"BB": 20.0,
"SO": 88.0,
"HR": 7.0,
"BF": 220.0,
"Pitches": 939.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0,
"R": 2.1,
"H": 3.7,
"BB": 2.0,
"SO": 8.8,
"HR": 0.7,
"BF": 22.0,
"Pitches": 93.9
},
"rates": {
"ERA": 3.2927,
"WHIP": 1.0427,
"ER_per_IP": 0.36585,
"H_per_IP": 0.67683,
"BB_per_IP": 0.36585,
"SO_per_IP": 1.60976,
"HR_per_IP": 0.12805
}
},
"season": {
"games": 31,
"totals": {
"IP": 181.0,
"ER": 73.0,
"R": 77.0,
"H": 139.0,
"BB": 57.0,
"SO": 244.0,
"HR": 27.0,
"BF": 728.0,
"Pitches": 2917.0
},
"per_game": {
"IP": 6.0,
"ER": 2.3548,
"R": 2.4839,
"H": 4.4839,
"BB": 1.8387,
"SO": 7.871,
"HR": 0.871,
"BF": 23.4839,
"Pitches": 94.0968
},
"rates": {
"ERA": 3.6298,
"WHIP": 1.0829,
"ER_per_IP": 0.40331,
"H_per_IP": 0.76796,
"BB_per_IP": 0.31492,
"SO_per_IP": 1.34807,
"HR_per_IP": 0.14917
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.106,
"predicted_H": 4.135,
"predicted_BB": 1.92,
"predicted_SO": 8.133,
"predicted_HR": 0.629,
"predicted_ERA": 3.4504,
"predicted_WHIP": 1.102
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.106,
"final": 2.4714,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.135,
"final": 3.6711,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.92,
"final": 1.1353,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 8.133,
"final": 6.8526,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.629,
"final": 0.7806,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.4504,
"final": 3.4504,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.102,
"final": 1.102,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 54.2,
"ER": 20,
"H": 37,
"BB": 20,
"SO": 88,
"HR": 7,
"ERA": 3.2926829268292686,
"WHIP": 1.0426829268292683,
"K9": 14.487804878048781,
"HR9": 1.152439024390244,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-20T00:00:00"
},
"recent_form_boost": 0.8572341799009302,
"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": 0.0,
"predicted_SO": 5.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
},
{
"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": 0,
"predicted_SO": 8,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "668909",
"player_name": "Gavin Williams",
"position": "Starter",
"team": "CLE",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"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": 0.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"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": "CLE",
"games": 159,
"wins": 83,
"losses": 76,
"win_pct": 0.522,
"runs_scored": 653.0,
"runs_allowed": 650.0,
"run_differential": 3.0,
"run_differential_per_game": 0.0189,
"avg_runs_scored": 4.1069,
"avg_runs_allowed": 4.0881,
"offense_index": 0.9183,
"defense_index": 1.094,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 3.0,
"run_differential": 17.0
},
"available": true,
"quality_score": 0.126
},
"opponent": {
"team": "KC",
"games": 159,
"wins": 68,
"losses": 91,
"win_pct": 0.4277,
"runs_scored": 673.0,
"runs_allowed": 785.0,
"run_differential": -112.0,
"run_differential_per_game": -0.7044,
"avg_runs_scored": 4.2327,
"avg_runs_allowed": 4.9371,
"offense_index": 0.9464,
"defense_index": 0.9059,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 6.1,
"run_differential": -21.0
},
"available": true,
"quality_score": -0.2531
},
"edges": {
"quality_edge": 0.3791,
"offense_edge": -0.0817,
"opponent_offense_edge": -0.0536,
"defense_strength": 0.094,
"opponent_defense_weakness": 0.0941,
"recent_win_pct_edge": 0.6
},
"player_factors": {
"ip": 1.0201,
"run_prevention": 0.9631,
"strikeout": 1.0157
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "668909",
"profile": {
"available": true,
"pitcher_id": "668909",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 700.0,
"k_percent": 33.5,
"bb_percent": 7.8,
"woba": 0.289,
"xwoba": 0.299,
"sweet_spot_percent": 35.2,
"barrel_batted_rate": 11.4,
"hard_hit_percent": 46.5,
"avg_best_speed": 79.1714,
"avg_hyper_speed": 94.9438,
"whiff_percent": 33.2,
"swing_percent": 49.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0538,
"command_and_miss": 1.2143,
"regression_edge": -0.2857,
"xwoba_edge": 0.3429,
"barrel_edge": -0.9333,
"hard_hit_edge": -1.2286,
"whiff_edge": 1.1714,
"bb_edge": 0.325,
"pitch_design_score": 0.0624
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "668909",
"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": 90.97845935651245,
"release_spin_rate": 2292.19753528252,
"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": 90.97845935651245,
"release_spin_rate": 2292.19753528252,
"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.9785,
"release_spin_rate": 2292.1975,
"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.4459,
"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.262,
"sample_weight": 1.0,
"run_prevention_factor": 0.9777,
"strikeout_factor": 1.1126,
"walk_factor": 0.974,
"homer_factor": 1.1135,
"woba_minus_xwoba": -0.01,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "668909",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9777,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9777,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.974,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1135,
"adjusted": 1
},
"predicted_SO": {
"original": 9.0,
"factor": 1.1126,
"adjusted": 10
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 8,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 20,
"Pitches": 80,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -7 outs from the projected workload."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +4."
}
],
"provenance": {
"prediction": "output/games/20260925_CLE@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"
}
} |
| 20260925 | 20260925_CLE@KC | home | Noah Cameron | Noah Cameron | True | 5.2 | 5.0 | -2 | 2 | 6 | 4 | 5/7 | 3/4 | 6/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.9168278529980656,
"WHIP": 1.2011605415860733,
"IP": 172.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.701,
"recent_avg_IP": 5.8,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0091,
"sample_weight": 1.0,
"run_prevention_factor": 1.0008,
"strikeout_factor": 1.0051,
"walk_factor": 0.968,
"homer_factor": 1.0158,
"regression_flag": "neutral",
"k_percent": 21.6,
"bb_percent": 7.5,
"woba": 0.3,
"xwoba": 0.31,
"barrel_percent": 8.2,
"hard_hit_percent": 37.7,
"whiff_percent": 26.3
},
"espn_rank": {
"rank": 65,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "702070",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.0,
"ER": 11.0,
"R": 11.0,
"H": 25.0,
"BB": 8.0,
"SO": 27.0,
"HR": 5.0,
"BF": 118.0,
"Pitches": 445.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2,
"R": 2.2,
"H": 5.0,
"BB": 1.6,
"SO": 5.4,
"HR": 1.0,
"BF": 23.6,
"Pitches": 89.0
},
"rates": {
"ERA": 3.4138,
"WHIP": 1.1379,
"ER_per_IP": 0.37931,
"H_per_IP": 0.86207,
"BB_per_IP": 0.27586,
"SO_per_IP": 0.93103,
"HR_per_IP": 0.17241
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 64.2,
"ER": 16.0,
"R": 16.0,
"H": 38.0,
"BB": 17.0,
"SO": 55.0,
"HR": 5.0,
"BF": 245.0,
"Pitches": 949.0
},
"per_game": {
"IP": 6.1,
"ER": 1.6,
"R": 1.6,
"H": 3.8,
"BB": 1.7,
"SO": 5.5,
"HR": 0.5,
"BF": 24.5,
"Pitches": 94.9
},
"rates": {
"ERA": 2.2268,
"WHIP": 0.8505,
"ER_per_IP": 0.24742,
"H_per_IP": 0.58763,
"BB_per_IP": 0.26289,
"SO_per_IP": 0.85052,
"HR_per_IP": 0.07732
}
},
"season": {
"games": 30,
"totals": {
"IP": 172.1,
"ER": 75.0,
"R": 80.0,
"H": 153.0,
"BB": 54.0,
"SO": 155.0,
"HR": 19.0,
"BF": 718.0,
"Pitches": 2792.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5,
"R": 2.6667,
"H": 5.1,
"BB": 1.8,
"SO": 5.1667,
"HR": 0.6333,
"BF": 23.9333,
"Pitches": 93.0667
},
"rates": {
"ERA": 3.9168,
"WHIP": 1.2012,
"ER_per_IP": 0.4352,
"H_per_IP": 0.88781,
"BB_per_IP": 0.31335,
"SO_per_IP": 0.89942,
"HR_per_IP": 0.11025
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.161,
"predicted_H": 4.703,
"predicted_BB": 1.719,
"predicted_SO": 5.293,
"predicted_HR": 0.762,
"predicted_ERA": 3.3156,
"predicted_WHIP": 1.0946
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.161,
"final": 2.0949,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.703,
"final": 4.8249,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.719,
"final": 2.2447,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 5.293,
"final": 5.5831,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.762,
"final": 0.8597,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.3156,
"final": 3.3156,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0946,
"final": 1.0946,
"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": 16,
"H": 38,
"BB": 17,
"SO": 55,
"HR": 5,
"ERA": 2.22680412371134,
"WHIP": 0.8505154639175257,
"K9": 7.654639175257731,
"HR9": 0.6958762886597938,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.7325186279773697,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_BB": 3.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "702070",
"player_name": "Noah Cameron",
"position": "Starter",
"team": "KC",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 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": 3.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 2.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": "KC",
"games": 159,
"wins": 68,
"losses": 91,
"win_pct": 0.4277,
"runs_scored": 673.0,
"runs_allowed": 785.0,
"run_differential": -112.0,
"run_differential_per_game": -0.7044,
"avg_runs_scored": 4.2327,
"avg_runs_allowed": 4.9371,
"offense_index": 0.9464,
"defense_index": 0.9059,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 6.1,
"run_differential": -21.0
},
"available": true,
"quality_score": -0.2531
},
"opponent": {
"team": "CLE",
"games": 159,
"wins": 83,
"losses": 76,
"win_pct": 0.522,
"runs_scored": 653.0,
"runs_allowed": 650.0,
"run_differential": 3.0,
"run_differential_per_game": 0.0189,
"avg_runs_scored": 4.1069,
"avg_runs_allowed": 4.0881,
"offense_index": 0.9183,
"defense_index": 1.094,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 3.0,
"run_differential": 17.0
},
"available": true,
"quality_score": 0.126
},
"edges": {
"quality_edge": -0.3791,
"offense_edge": -0.0536,
"opponent_offense_edge": -0.0817,
"defense_strength": -0.0941,
"opponent_defense_weakness": -0.094,
"recent_win_pct_edge": -0.6
},
"player_factors": {
"ip": 0.9853,
"run_prevention": 1.0153,
"strikeout": 0.9952
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "702070",
"profile": {
"available": true,
"pitcher_id": "702070",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 687.0,
"k_percent": 21.6,
"bb_percent": 7.5,
"woba": 0.3,
"xwoba": 0.31,
"sweet_spot_percent": 36.9,
"barrel_batted_rate": 8.2,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.871,
"avg_hyper_speed": 93.9779,
"whiff_percent": 26.3,
"swing_percent": 48.5
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0039,
"command_and_miss": 0.1193,
"regression_edge": -0.2857,
"xwoba_edge": 0.0286,
"barrel_edge": -0.2222,
"hard_hit_edge": 0.0286,
"whiff_edge": 0.1857,
"bb_edge": 0.4,
"pitch_design_score": -0.1714
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "702070",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 87,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 86.80222764841449,
"release_spin_rate": 2194.1160947580797,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 86.80222764841449,
"release_spin_rate": 2194.1160947580797,
"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.8022,
"release_spin_rate": 2194.1161,
"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.1714,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.2246,
"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.0091,
"sample_weight": 1.0,
"run_prevention_factor": 1.0008,
"strikeout_factor": 1.0051,
"walk_factor": 0.968,
"homer_factor": 1.0158,
"woba_minus_xwoba": -0.01,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "702070",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0008,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0008,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.968,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0158,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0051,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 25,
"Pitches": 110,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 4",
"detail": "Actual minus predicted earned runs was +4; this is the primary run-prevention error."
}
],
"provenance": {
"prediction": "output/games/20260925_CLE@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"
}
} |
| 20260925 | 20260925_COL@CHW | away | Tomoyuki Sugano | Tomoyuki Sugano | True | 5.0 | 6.2 | 5 | 6 | 4 | -2 | 6/6 | 2/0 | 3/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.363431151241535,
"WHIP": 1.3340857787810385,
"IP": 147.2,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.274,
"recent_avg_IP": 5.2,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.9839,
"sample_weight": 1.0,
"run_prevention_factor": 1.0836,
"strikeout_factor": 0.9229,
"walk_factor": 0.932,
"homer_factor": 1.1749,
"regression_flag": "neutral",
"k_percent": 14.4,
"bb_percent": 5.7,
"woba": 0.358,
"xwoba": 0.381,
"barrel_percent": 11.8,
"hard_hit_percent": 43.7,
"whiff_percent": 19.1
},
"espn_rank": {
"rank": 110,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "608372",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 21.0,
"R": 21.0,
"H": 29.0,
"BB": 8.0,
"SO": 20.0,
"HR": 5.0,
"BF": 115.0,
"Pitches": 440.0
},
"per_game": {
"IP": 5.1,
"ER": 4.2,
"R": 4.2,
"H": 5.8,
"BB": 1.6,
"SO": 4.0,
"HR": 1.0,
"BF": 23.0,
"Pitches": 88.0
},
"rates": {
"ERA": 7.2692,
"WHIP": 1.4231,
"ER_per_IP": 0.80769,
"H_per_IP": 1.11538,
"BB_per_IP": 0.30769,
"SO_per_IP": 0.76923,
"HR_per_IP": 0.19231
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.2,
"ER": 38.0,
"R": 39.0,
"H": 61.0,
"BB": 12.0,
"SO": 35.0,
"HR": 11.0,
"BF": 226.0,
"Pitches": 882.0
},
"per_game": {
"IP": 5.1,
"ER": 3.8,
"R": 3.9,
"H": 6.1,
"BB": 1.2,
"SO": 3.5,
"HR": 1.1,
"BF": 22.6,
"Pitches": 88.2
},
"rates": {
"ERA": 6.6194,
"WHIP": 1.4129,
"ER_per_IP": 0.73548,
"H_per_IP": 1.18065,
"BB_per_IP": 0.23226,
"SO_per_IP": 0.67742,
"HR_per_IP": 0.2129
}
},
"season": {
"games": 28,
"totals": {
"IP": 147.2,
"ER": 88.0,
"R": 91.0,
"H": 161.0,
"BB": 36.0,
"SO": 91.0,
"HR": 31.0,
"BF": 631.0,
"Pitches": 2432.0
},
"per_game": {
"IP": 5.1,
"ER": 3.1429,
"R": 3.25,
"H": 5.75,
"BB": 1.2857,
"SO": 3.25,
"HR": 1.1071,
"BF": 22.5357,
"Pitches": 86.8571
},
"rates": {
"ERA": 5.3634,
"WHIP": 1.3341,
"ER_per_IP": 0.59594,
"H_per_IP": 1.09029,
"BB_per_IP": 0.24379,
"SO_per_IP": 0.61625,
"HR_per_IP": 0.20993
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 3.763,
"predicted_H": 5.923,
"predicted_BB": 1.52,
"predicted_SO": 3.954,
"predicted_HR": 1.039,
"predicted_ERA": 6.3507,
"predicted_WHIP": 1.3957
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.414,
"form_weight": 0.586,
"form_reliability": 0.8485,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 7.0,
"form": 3.763,
"final": 5.1031,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.923,
"final": 5.9549,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.52,
"final": 1.7187,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 3.954,
"final": 3.559,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 1.039,
"final": 1.4369,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.3507,
"final": 6.3507,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3957,
"final": 1.3957,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 51.2,
"ER": 38,
"H": 61,
"BB": 12,
"SO": 35,
"HR": 11,
"ERA": 6.619354838709678,
"WHIP": 1.4129032258064518,
"K9": 6.096774193548387,
"HR9": 1.9161290322580646,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-20T00:00:00"
},
"recent_form_boost": 1.2407402774619058,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 7.0,
"predicted_H": 6.0,
"predicted_BB": 2.0,
"predicted_SO": 3.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 7,
"predicted_H": 6,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "608372",
"player_name": "Tomoyuki Sugano",
"position": "Starter",
"team": "COL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 7.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.3333,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 7.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 7.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_R": 7.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "COL",
"games": 159,
"wins": 57,
"losses": 102,
"win_pct": 0.3585,
"runs_scored": 740.0,
"runs_allowed": 928.0,
"run_differential": -188.0,
"run_differential_per_game": -1.1824,
"avg_runs_scored": 4.6541,
"avg_runs_allowed": 5.8365,
"offense_index": 1.0406,
"defense_index": 0.7663,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 6.3,
"run_differential": -19.0
},
"available": true,
"quality_score": -0.3707
},
"opponent": {
"team": "CHW",
"games": 159,
"wins": 82,
"losses": 77,
"win_pct": 0.5157,
"runs_scored": 760.0,
"runs_allowed": 708.0,
"run_differential": 52.0,
"run_differential_per_game": 0.327,
"avg_runs_scored": 4.7799,
"avg_runs_allowed": 4.4528,
"offense_index": 1.0688,
"defense_index": 1.0044,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 6.5,
"avg_runs_allowed": 4.7,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.0886
},
"edges": {
"quality_edge": -0.4593,
"offense_edge": 0.0406,
"opponent_offense_edge": 0.0688,
"defense_strength": -0.2337,
"opponent_defense_weakness": -0.0044,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9719,
"run_prevention": 1.0573,
"strikeout": 0.9807
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "608372",
"profile": {
"available": true,
"pitcher_id": "608372",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 602.0,
"k_percent": 14.4,
"bb_percent": 5.7,
"woba": 0.358,
"xwoba": 0.381,
"sweet_spot_percent": 37.3,
"barrel_batted_rate": 11.8,
"hard_hit_percent": 43.7,
"avg_best_speed": 80.9925,
"avg_hyper_speed": 95.1097,
"whiff_percent": 19.1,
"swing_percent": 47.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -1.3423,
"command_and_miss": -0.6136,
"regression_edge": -0.6571,
"xwoba_edge": -2.0,
"barrel_edge": -1.0222,
"hard_hit_edge": -0.8286,
"whiff_edge": -0.8429,
"bb_edge": 0.85,
"pitch_design_score": -0.0871
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "608372",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 92,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 88.30861213850356,
"release_spin_rate": 2300.4901092326763,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 88.30861213850356,
"release_spin_rate": 2300.4901092326763,
"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.3086,
"release_spin_rate": 2300.4901,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0871,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.622,
"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.9839,
"sample_weight": 1.0,
"run_prevention_factor": 1.0836,
"strikeout_factor": 0.9229,
"walk_factor": 0.932,
"homer_factor": 1.1749,
"woba_minus_xwoba": -0.023,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "608372",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0836,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 1.0836,
"adjusted": 7
},
"predicted_BB": {
"original": 2.0,
"factor": 0.932,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1749,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9229,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 6,
"predicted_R": 7,
"predicted_ER": 7,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 23,
"Pitches": 92,
"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/20260925_COL@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"
}
} |
| 20260925 | 20260925_COL@CHW | home | Sean Burke | Sean Burke | True | 5.0 | 5.1 | 1 | 1 | 1 | 0 | 4/4 | 0/1 | 6/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.395209580838323,
"WHIP": 1.2035928143712575,
"IP": 167.0,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.269,
"recent_avg_IP": 4.4,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0861,
"sample_weight": 1.0,
"run_prevention_factor": 0.9927,
"strikeout_factor": 1.0229,
"walk_factor": 0.994,
"homer_factor": 1.0154,
"regression_flag": "neutral",
"k_percent": 25.6,
"bb_percent": 8.8,
"woba": 0.303,
"xwoba": 0.303,
"barrel_percent": 8.1,
"hard_hit_percent": 39.0,
"whiff_percent": 25.4
},
"espn_rank": {
"rank": 19,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "680732",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 21.0,
"ER": 10.0,
"R": 11.0,
"H": 20.0,
"BB": 19.0,
"SO": 20.0,
"HR": 1.0,
"BF": 99.0,
"Pitches": 435.0
},
"per_game": {
"IP": 4.1,
"ER": 2.0,
"R": 2.2,
"H": 4.0,
"BB": 3.8,
"SO": 4.0,
"HR": 0.2,
"BF": 19.8,
"Pitches": 87.0
},
"rates": {
"ERA": 4.2857,
"WHIP": 1.8571,
"ER_per_IP": 0.47619,
"H_per_IP": 0.95238,
"BB_per_IP": 0.90476,
"SO_per_IP": 0.95238,
"HR_per_IP": 0.04762
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.2,
"ER": 21.0,
"R": 22.0,
"H": 43.0,
"BB": 26.0,
"SO": 48.0,
"HR": 5.0,
"BF": 213.0,
"Pitches": 881.0
},
"per_game": {
"IP": 5.0,
"ER": 2.1,
"R": 2.2,
"H": 4.3,
"BB": 2.6,
"SO": 4.8,
"HR": 0.5,
"BF": 21.3,
"Pitches": 88.1
},
"rates": {
"ERA": 3.8836,
"WHIP": 1.4178,
"ER_per_IP": 0.43151,
"H_per_IP": 0.88356,
"BB_per_IP": 0.53425,
"SO_per_IP": 0.9863,
"HR_per_IP": 0.10274
}
},
"season": {
"games": 31,
"totals": {
"IP": 167.0,
"ER": 63.0,
"R": 66.0,
"H": 140.0,
"BB": 61.0,
"SO": 178.0,
"HR": 18.0,
"BF": 695.0,
"Pitches": 2789.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0323,
"R": 2.129,
"H": 4.5161,
"BB": 1.9677,
"SO": 5.7419,
"HR": 0.5806,
"BF": 22.4194,
"Pitches": 89.9677
},
"rates": {
"ERA": 3.3952,
"WHIP": 1.2036,
"ER_per_IP": 0.37725,
"H_per_IP": 0.83832,
"BB_per_IP": 0.36527,
"SO_per_IP": 1.06587,
"HR_per_IP": 0.10778
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.163,
"predicted_H": 4.398,
"predicted_BB": 3.009,
"predicted_SO": 4.703,
"predicted_HR": 0.426,
"predicted_ERA": 4.0569,
"predicted_WHIP": 1.5434
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.163,
"final": 1.6877,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.398,
"final": 4.2353,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 3.009,
"final": 1.7793,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.703,
"final": 4.8244,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.426,
"final": 0.2519,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.0569,
"final": 4.0569,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5434,
"final": 1.5434,
"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": 21,
"H": 43,
"BB": 26,
"SO": 48,
"HR": 5,
"ERA": 3.8835616438356166,
"WHIP": 1.4178082191780823,
"K9": 8.876712328767123,
"HR9": 0.9246575342465754,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.9330861678728648,
"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": 0.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "680732",
"player_name": "Sean Burke",
"position": "Starter",
"team": "CHW",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 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": 0.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 1.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": 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": "CHW",
"games": 159,
"wins": 82,
"losses": 77,
"win_pct": 0.5157,
"runs_scored": 760.0,
"runs_allowed": 708.0,
"run_differential": 52.0,
"run_differential_per_game": 0.327,
"avg_runs_scored": 4.7799,
"avg_runs_allowed": 4.4528,
"offense_index": 1.0688,
"defense_index": 1.0044,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 6.5,
"avg_runs_allowed": 4.7,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.0886
},
"opponent": {
"team": "COL",
"games": 159,
"wins": 57,
"losses": 102,
"win_pct": 0.3585,
"runs_scored": 740.0,
"runs_allowed": 928.0,
"run_differential": -188.0,
"run_differential_per_game": -1.1824,
"avg_runs_scored": 4.6541,
"avg_runs_allowed": 5.8365,
"offense_index": 1.0406,
"defense_index": 0.7663,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 6.3,
"run_differential": -19.0
},
"available": true,
"quality_score": -0.3707
},
"edges": {
"quality_edge": 0.4593,
"offense_edge": 0.0688,
"opponent_offense_edge": 0.0406,
"defense_strength": 0.0044,
"opponent_defense_weakness": 0.2337,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0169,
"run_prevention": 0.9831,
"strikeout": 1.0105
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "680732",
"profile": {
"available": true,
"pitcher_id": "680732",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 644.0,
"k_percent": 25.6,
"bb_percent": 8.8,
"woba": 0.303,
"xwoba": 0.303,
"sweet_spot_percent": 35.4,
"barrel_batted_rate": 8.1,
"hard_hit_percent": 39.0,
"avg_best_speed": 79.5292,
"avg_hyper_speed": 94.0009,
"whiff_percent": 25.4,
"swing_percent": 48.7
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0319,
"command_and_miss": 0.2664,
"regression_edge": 0.0,
"xwoba_edge": 0.2286,
"barrel_edge": -0.2,
"hard_hit_edge": -0.1571,
"whiff_edge": 0.0571,
"bb_edge": 0.075,
"pitch_design_score": -0.0129
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "680732",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 87,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 89.63367275202977,
"release_spin_rate": 2515.4651388536104,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 89.63367275202977,
"release_spin_rate": 2515.4651388536104,
"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.6337,
"release_spin_rate": 2515.4651,
"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.0129,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.092,
"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.0861,
"sample_weight": 1.0,
"run_prevention_factor": 0.9927,
"strikeout_factor": 1.0229,
"walk_factor": 0.994,
"homer_factor": 1.0154,
"woba_minus_xwoba": 0.0,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "680732",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9927,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9927,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 0.994,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0154,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0229,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 19,
"Pitches": 83,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260925_COL@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"
}
} |
| 20260925 | 20260925_HOU@OAK | away | Hunter Brown | Hunter Brown | True | 5.1 | 5.1 | 0 | 3 | 1 | -2 | 5/2 | 0/4 | 6/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.264705882352941,
"WHIP": 1.2745098039215685,
"IP": 102.0,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 5.368,
"recent_avg_IP": 5.533,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.5186,
"sample_weight": 1.0,
"run_prevention_factor": 0.9559,
"strikeout_factor": 1.0474,
"walk_factor": 1.056,
"homer_factor": 0.9478,
"regression_flag": "neutral",
"k_percent": 28.1,
"bb_percent": 11.9,
"woba": 0.294,
"xwoba": 0.279,
"barrel_percent": 6.0,
"hard_hit_percent": 37.3,
"whiff_percent": 27.2
},
"espn_rank": {
"rank": 69,
"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": "686613",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.2,
"ER": 8.0,
"R": 9.0,
"H": 23.0,
"BB": 8.0,
"SO": 44.0,
"HR": 1.0,
"BF": 112.0,
"Pitches": 482.0
},
"per_game": {
"IP": 5.2,
"ER": 1.6,
"R": 1.8,
"H": 4.6,
"BB": 1.6,
"SO": 8.8,
"HR": 0.2,
"BF": 22.4,
"Pitches": 96.4
},
"rates": {
"ERA": 2.6024,
"WHIP": 1.1205,
"ER_per_IP": 0.28916,
"H_per_IP": 0.83133,
"BB_per_IP": 0.28916,
"SO_per_IP": 1.59036,
"HR_per_IP": 0.03614
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.0,
"ER": 19.0,
"R": 20.0,
"H": 47.0,
"BB": 23.0,
"SO": 70.0,
"HR": 6.0,
"BF": 227.0,
"Pitches": 959.0
},
"per_game": {
"IP": 5.1,
"ER": 1.9,
"R": 2.0,
"H": 4.7,
"BB": 2.3,
"SO": 7.0,
"HR": 0.6,
"BF": 22.7,
"Pitches": 95.9
},
"rates": {
"ERA": 3.1091,
"WHIP": 1.2727,
"ER_per_IP": 0.34545,
"H_per_IP": 0.85455,
"BB_per_IP": 0.41818,
"SO_per_IP": 1.27273,
"HR_per_IP": 0.10909
}
},
"season": {
"games": 19,
"totals": {
"IP": 102.0,
"ER": 37.0,
"R": 40.0,
"H": 79.0,
"BB": 51.0,
"SO": 120.0,
"HR": 11.0,
"BF": 427.0,
"Pitches": 1781.0
},
"per_game": {
"IP": 5.1,
"ER": 1.9474,
"R": 2.1053,
"H": 4.1579,
"BB": 2.6842,
"SO": 6.3158,
"HR": 0.5789,
"BF": 22.4737,
"Pitches": 93.7368
},
"rates": {
"ERA": 3.2647,
"WHIP": 1.2745,
"ER_per_IP": 0.36275,
"H_per_IP": 0.77451,
"BB_per_IP": 0.5,
"SO_per_IP": 1.17647,
"HR_per_IP": 0.10784
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 1.979,
"predicted_H": 4.692,
"predicted_BB": 2.054,
"predicted_SO": 7.091,
"predicted_HR": 0.497,
"predicted_ERA": 3.2669,
"predicted_WHIP": 1.2374
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.438,
"form_weight": 0.562,
"form_reliability": 0.7917,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.979,
"final": 2.4262,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.692,
"final": 4.8269,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.054,
"final": 1.1543,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 7.091,
"final": 6.6131,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.497,
"final": 0.7173,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.2669,
"final": 3.2669,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2374,
"final": 1.2374,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.0,
"ER": 19,
"H": 47,
"BB": 23,
"SO": 70,
"HR": 6,
"ERA": 3.109090909090909,
"WHIP": 1.2727272727272727,
"K9": 11.454545454545455,
"HR9": 0.9818181818181818,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-20T00:00:00"
},
"recent_form_boost": 0.8423311865528149,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 0.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
}
}
],
"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": 0.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.3333,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "HOU",
"games": 159,
"wins": 79,
"losses": 80,
"win_pct": 0.4969,
"runs_scored": 707.0,
"runs_allowed": 758.0,
"run_differential": -51.0,
"run_differential_per_game": -0.3208,
"avg_runs_scored": 4.4465,
"avg_runs_allowed": 4.7673,
"offense_index": 0.9932,
"defense_index": 0.9391,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 5.0,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.077
},
"opponent": {
"team": "OAK",
"games": 159,
"wins": 63,
"losses": 96,
"win_pct": 0.3962,
"runs_scored": 691.0,
"runs_allowed": 910.0,
"run_differential": -219.0,
"run_differential_per_game": -1.3774,
"avg_runs_scored": 4.3459,
"avg_runs_allowed": 5.7233,
"offense_index": 0.9708,
"defense_index": 0.7822,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 5.8,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.3275
},
"edges": {
"quality_edge": 0.2505,
"offense_edge": -0.0068,
"opponent_offense_edge": -0.0292,
"defense_strength": -0.0609,
"opponent_defense_weakness": 0.2178,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0094,
"run_prevention": 0.9889,
"strikeout": 1.0099
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "686613",
"profile": {
"available": true,
"pitcher_id": "686613",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 386.0,
"k_percent": 28.1,
"bb_percent": 11.9,
"woba": 0.294,
"xwoba": 0.279,
"sweet_spot_percent": 27.4,
"barrel_batted_rate": 6.0,
"hard_hit_percent": 37.3,
"avg_best_speed": 74.0205,
"avg_hyper_speed": 93.2519,
"whiff_percent": 27.2,
"swing_percent": 42.5
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.6617,
"command_and_miss": 0.3621,
"regression_edge": 0.4286,
"xwoba_edge": 0.9143,
"barrel_edge": 0.2667,
"hard_hit_edge": 0.0857,
"whiff_edge": 0.3143,
"bb_edge": -0.7,
"pitch_design_score": 0.1385
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "686613",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 98,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 98,
"pitch_usage": 0.0,
"release_speed": 92.33714491013515,
"release_spin_rate": 2193.36097163242,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 98,
"pitch_usage": 0.0,
"release_speed": 92.33714491013515,
"release_spin_rate": 2193.36097163242,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 92.3371,
"release_spin_rate": 2193.361,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1385,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.9894,
"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.5186,
"sample_weight": 1.0,
"run_prevention_factor": 0.9559,
"strikeout_factor": 1.0474,
"walk_factor": 1.056,
"homer_factor": 0.9478,
"woba_minus_xwoba": 0.015,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "686613",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9559,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9559,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.056,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9478,
"adjusted": 0
},
"predicted_SO": {
"original": 8.0,
"factor": 1.0474,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"Pitches": 86,
"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 +4."
}
],
"provenance": {
"prediction": "output/games/20260925_HOU@OAK.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_HOU@OAK | home | Jacob Lopez | Jacob Lopez | True | 4.1 | 6.0 | 5 | 3 | 1 | -2 | 5/2 | 0/2 | 7/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.676136363636364,
"WHIP": 1.5340909090909092,
"IP": 117.1,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 4.725,
"recent_avg_IP": 4.667,
"last_start_IP": 2.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2022,
"sample_weight": 1.0,
"run_prevention_factor": 0.9828,
"strikeout_factor": 0.9863,
"walk_factor": 1.03,
"homer_factor": 0.9428,
"regression_flag": "positive_pitcher_regression",
"k_percent": 20.4,
"bb_percent": 10.6,
"woba": 0.354,
"xwoba": 0.296,
"barrel_percent": 6.6,
"hard_hit_percent": 32.0,
"whiff_percent": 24.2
},
"espn_rank": {
"rank": 352,
"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": "682052",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.1,
"ER": 22.0,
"R": 23.0,
"H": 32.0,
"BB": 9.0,
"SO": 18.0,
"HR": 7.0,
"BF": 110.0,
"Pitches": 460.0
},
"per_game": {
"IP": 4.2,
"ER": 4.4,
"R": 4.6,
"H": 6.4,
"BB": 1.8,
"SO": 3.6,
"HR": 1.4,
"BF": 22.0,
"Pitches": 92.0
},
"rates": {
"ERA": 8.4857,
"WHIP": 1.7571,
"ER_per_IP": 0.94286,
"H_per_IP": 1.37143,
"BB_per_IP": 0.38571,
"SO_per_IP": 0.77143,
"HR_per_IP": 0.3
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.2,
"ER": 30.0,
"R": 32.0,
"H": 56.0,
"BB": 16.0,
"SO": 55.0,
"HR": 11.0,
"BF": 227.0,
"Pitches": 921.0
},
"per_game": {
"IP": 5.1,
"ER": 3.0,
"R": 3.2,
"H": 5.6,
"BB": 1.6,
"SO": 5.5,
"HR": 1.1,
"BF": 22.7,
"Pitches": 92.1
},
"rates": {
"ERA": 5.1266,
"WHIP": 1.3671,
"ER_per_IP": 0.56962,
"H_per_IP": 1.06329,
"BB_per_IP": 0.3038,
"SO_per_IP": 1.0443,
"HR_per_IP": 0.20886
}
},
"season": {
"games": 26,
"totals": {
"IP": 117.1,
"ER": 74.0,
"R": 77.0,
"H": 124.0,
"BB": 56.0,
"SO": 108.0,
"HR": 22.0,
"BF": 529.0,
"Pitches": 2149.0
},
"per_game": {
"IP": 4.2,
"ER": 2.8462,
"R": 2.9615,
"H": 4.7692,
"BB": 2.1538,
"SO": 4.1538,
"HR": 0.8462,
"BF": 20.3462,
"Pitches": 82.6538
},
"rates": {
"ERA": 5.6761,
"WHIP": 1.5341,
"ER_per_IP": 0.63068,
"H_per_IP": 1.05682,
"BB_per_IP": 0.47727,
"SO_per_IP": 0.92045,
"HR_per_IP": 0.1875
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 3.46,
"predicted_H": 5.668,
"predicted_BB": 1.827,
"predicted_SO": 4.392,
"predicted_HR": 1.118,
"predicted_ERA": 6.404,
"predicted_WHIP": 1.5415
}
},
"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": 4.2,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 3.46,
"final": 2.8495,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.668,
"final": 4.5524,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.827,
"final": 1.063,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.392,
"final": 5.4825,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.118,
"final": 1.0687,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.404,
"final": 6.404,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5415,
"final": 1.5415,
"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.2,
"ER": 30,
"H": 56,
"BB": 16,
"SO": 55,
"HR": 11,
"ERA": 5.126582278481013,
"WHIP": 1.3670886075949367,
"K9": 9.398734177215191,
"HR9": 1.879746835443038,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 1.0716579989808932,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_BB": 0.0,
"predicted_SO": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
}
},
{
"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": 3,
"predicted_BB": 0,
"predicted_SO": 7,
"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": 5,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"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": 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": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 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": 0.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"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": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"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": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 2,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_H",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"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": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 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": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"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": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 3,
"boosted_metrics": 2,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 3,
"biggest_boost": {
"metric": "predicted_H",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"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": "OAK",
"games": 159,
"wins": 63,
"losses": 96,
"win_pct": 0.3962,
"runs_scored": 691.0,
"runs_allowed": 910.0,
"run_differential": -219.0,
"run_differential_per_game": -1.3774,
"avg_runs_scored": 4.3459,
"avg_runs_allowed": 5.7233,
"offense_index": 0.9708,
"defense_index": 0.7822,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 5.8,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.3275
},
"opponent": {
"team": "HOU",
"games": 159,
"wins": 79,
"losses": 80,
"win_pct": 0.4969,
"runs_scored": 707.0,
"runs_allowed": 758.0,
"run_differential": -51.0,
"run_differential_per_game": -0.3208,
"avg_runs_scored": 4.4465,
"avg_runs_allowed": 4.7673,
"offense_index": 0.9932,
"defense_index": 0.9391,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 5.0,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.077
},
"edges": {
"quality_edge": -0.2505,
"offense_edge": -0.0292,
"opponent_offense_edge": -0.0068,
"defense_strength": -0.2178,
"opponent_defense_weakness": 0.0609,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9837,
"run_prevention": 1.0332,
"strikeout": 0.993
},
"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": 505.0,
"k_percent": 20.4,
"bb_percent": 10.6,
"woba": 0.354,
"xwoba": 0.296,
"sweet_spot_percent": 33.2,
"barrel_batted_rate": 6.6,
"hard_hit_percent": 32.0,
"avg_best_speed": 71.9236,
"avg_hyper_speed": 92.6061,
"whiff_percent": 24.2,
"swing_percent": 46.1
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.2063,
"command_and_miss": -0.2179,
"regression_edge": 1.6571,
"xwoba_edge": 0.4286,
"barrel_edge": 0.1333,
"hard_hit_edge": 0.8429,
"whiff_edge": -0.1143,
"bb_edge": -0.375,
"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": 97,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 84.00032129257265,
"release_spin_rate": 2262.419878494836,
"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": 84.00032129257265,
"release_spin_rate": 2262.419878494836,
"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.0003,
"release_spin_rate": 2262.4199,
"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.2022,
"sample_weight": 1.0,
"run_prevention_factor": 0.9828,
"strikeout_factor": 0.9863,
"walk_factor": 1.03,
"homer_factor": 0.9428,
"woba_minus_xwoba": 0.058,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "682052",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 0.9828,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 0.9828,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.03,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9428,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9863,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 18,
"Pitches": 70,
"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/20260925_HOU@OAK.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_LAA@SEA | away | Reid Detmers | Reid Detmers | True | 6.0 | 6.0 | 0 | 3 | 0 | -3 | 4/2 | 4/2 | 6/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.46927374301676,
"WHIP": 1.0502793296089385,
"IP": 179.0,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.774,
"recent_avg_IP": 6.0,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4617,
"sample_weight": 1.0,
"run_prevention_factor": 0.9608,
"strikeout_factor": 1.0589,
"walk_factor": 0.946,
"homer_factor": 0.9797,
"regression_flag": "neutral",
"k_percent": 28.4,
"bb_percent": 6.4,
"woba": 0.273,
"xwoba": 0.279,
"barrel_percent": 7.6,
"hard_hit_percent": 37.9,
"whiff_percent": 28.9
},
"espn_rank": {
"rank": 20,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "672282",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 9.0,
"R": 9.0,
"H": 28.0,
"BB": 2.0,
"SO": 32.0,
"HR": 2.0,
"BF": 115.0,
"Pitches": 473.0
},
"per_game": {
"IP": 6.0,
"ER": 1.8,
"R": 1.8,
"H": 5.6,
"BB": 0.4,
"SO": 6.4,
"HR": 0.4,
"BF": 23.0,
"Pitches": 94.6
},
"rates": {
"ERA": 2.7,
"WHIP": 1.0,
"ER_per_IP": 0.3,
"H_per_IP": 0.93333,
"BB_per_IP": 0.06667,
"SO_per_IP": 1.06667,
"HR_per_IP": 0.06667
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 59.0,
"ER": 15.0,
"R": 15.0,
"H": 47.0,
"BB": 9.0,
"SO": 68.0,
"HR": 6.0,
"BF": 225.0,
"Pitches": 907.0
},
"per_game": {
"IP": 6.0,
"ER": 1.5,
"R": 1.5,
"H": 4.7,
"BB": 0.9,
"SO": 6.8,
"HR": 0.6,
"BF": 22.5,
"Pitches": 90.7
},
"rates": {
"ERA": 2.2881,
"WHIP": 0.9492,
"ER_per_IP": 0.25424,
"H_per_IP": 0.79661,
"BB_per_IP": 0.15254,
"SO_per_IP": 1.15254,
"HR_per_IP": 0.10169
}
},
"season": {
"games": 31,
"totals": {
"IP": 179.0,
"ER": 69.0,
"R": 72.0,
"H": 142.0,
"BB": 46.0,
"SO": 204.0,
"HR": 19.0,
"BF": 718.0,
"Pitches": 2872.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2258,
"R": 2.3226,
"H": 4.5806,
"BB": 1.4839,
"SO": 6.5806,
"HR": 0.6129,
"BF": 23.1613,
"Pitches": 92.6452
},
"rates": {
"ERA": 3.4693,
"WHIP": 1.0503,
"ER_per_IP": 0.38547,
"H_per_IP": 0.7933,
"BB_per_IP": 0.25698,
"SO_per_IP": 1.13966,
"HR_per_IP": 0.10615
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.964,
"predicted_H": 5.2,
"predicted_BB": 1.002,
"predicted_SO": 6.46,
"predicted_HR": 0.567,
"predicted_ERA": 2.9744,
"predicted_WHIP": 1.0436
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.964,
"final": 2.3874,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.2,
"final": 4.7096,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.002,
"final": 2.2272,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 6.46,
"final": 5.0459,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.567,
"final": 0.3353,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.9744,
"final": 2.9744,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0436,
"final": 1.0436,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 59.0,
"ER": 15,
"H": 47,
"BB": 9,
"SO": 68,
"HR": 6,
"ERA": 2.288135593220339,
"WHIP": 0.9491525423728814,
"K9": 10.372881355932204,
"HR9": 0.9152542372881356,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.741884345258516,
"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": 4.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3,
"predicted_H": 4,
"predicted_BB": 4,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "672282",
"player_name": "Reid Detmers",
"position": "Starter",
"team": "LAA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 6.0,
"delta": 3.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 6.0,
"delta": 3.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 6.0,
"delta": 3.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 6.0,
"delta": 3.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAA",
"games": 159,
"wins": 61,
"losses": 98,
"win_pct": 0.3836,
"runs_scored": 641.0,
"runs_allowed": 732.0,
"run_differential": -91.0,
"run_differential_per_game": -0.5723,
"avg_runs_scored": 4.0314,
"avg_runs_allowed": 4.6038,
"offense_index": 0.9005,
"defense_index": 0.9724,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 5.2,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.1693
},
"opponent": {
"team": "SEA",
"games": 159,
"wins": 74,
"losses": 85,
"win_pct": 0.4654,
"runs_scored": 644.0,
"runs_allowed": 708.0,
"run_differential": -64.0,
"run_differential_per_game": -0.4025,
"avg_runs_scored": 4.0503,
"avg_runs_allowed": 4.4528,
"offense_index": 0.9047,
"defense_index": 1.0054,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 4.6,
"run_differential": -7.0
},
"available": true,
"quality_score": -0.1139
},
"edges": {
"quality_edge": -0.0554,
"offense_edge": -0.0995,
"opponent_offense_edge": -0.0953,
"defense_strength": -0.0276,
"opponent_defense_weakness": -0.0054,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0008,
"run_prevention": 0.9903,
"strikeout": 1.006
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "672282",
"profile": {
"available": true,
"pitcher_id": "672282",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 694.0,
"k_percent": 28.4,
"bb_percent": 6.4,
"woba": 0.273,
"xwoba": 0.279,
"sweet_spot_percent": 31.0,
"barrel_batted_rate": 7.6,
"hard_hit_percent": 37.9,
"avg_best_speed": 79.7161,
"avg_hyper_speed": 94.2133,
"whiff_percent": 28.9,
"swing_percent": 49.4
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.5256,
"command_and_miss": 0.7414,
"regression_edge": -0.1714,
"xwoba_edge": 0.9143,
"barrel_edge": -0.0889,
"hard_hit_edge": 0.0,
"whiff_edge": 0.5571,
"bb_edge": 0.675,
"pitch_design_score": -0.103
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "672282",
"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": 88.02393441073,
"release_spin_rate": 2234.8342638538984,
"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": 88.02393441073,
"release_spin_rate": 2234.8342638538984,
"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.0239,
"release_spin_rate": 2234.8343,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.103,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.7359,
"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.4617,
"sample_weight": 1.0,
"run_prevention_factor": 0.9608,
"strikeout_factor": 1.0589,
"walk_factor": 0.946,
"homer_factor": 0.9797,
"woba_minus_xwoba": -0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "672282",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9608,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9608,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.946,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9797,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0589,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 4,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 27,
"Pitches": 115,
"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/20260925_LAA@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"
}
} |
| 20260925 | 20260925_LAA@SEA | home | Bryce Miller | Bryce Miller | True | 5.1 | 6.0 | 2 | 4 | 5 | 1 | 4/6 | 4/2 | 2/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.994082840236686,
"WHIP": 1.1538461538461537,
"IP": 112.2,
"games_started": null,
"games_pitched": 21,
"role_avg_IP": 5.383,
"recent_avg_IP": 4.6,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2686,
"sample_weight": 1.0,
"run_prevention_factor": 0.9772,
"strikeout_factor": 1.0154,
"walk_factor": 0.974,
"homer_factor": 0.9632,
"regression_flag": "neutral",
"k_percent": 24.4,
"bb_percent": 7.8,
"woba": 0.306,
"xwoba": 0.295,
"barrel_percent": 7.8,
"hard_hit_percent": 32.0,
"whiff_percent": 25.3
},
"espn_rank": {
"rank": 125,
"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": "682243",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 21,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.0,
"ER": 13.0,
"R": 14.0,
"H": 19.0,
"BB": 18.0,
"SO": 25.0,
"HR": 5.0,
"BF": 105.0,
"Pitches": 433.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6,
"R": 2.8,
"H": 3.8,
"BB": 3.6,
"SO": 5.0,
"HR": 1.0,
"BF": 21.0,
"Pitches": 86.6
},
"rates": {
"ERA": 5.087,
"WHIP": 1.6087,
"ER_per_IP": 0.56522,
"H_per_IP": 0.82609,
"BB_per_IP": 0.78261,
"SO_per_IP": 1.08696,
"HR_per_IP": 0.21739
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.1,
"ER": 34.0,
"R": 36.0,
"H": 48.0,
"BB": 26.0,
"SO": 41.0,
"HR": 11.0,
"BF": 218.0,
"Pitches": 883.0
},
"per_game": {
"IP": 5.0,
"ER": 3.4,
"R": 3.6,
"H": 4.8,
"BB": 2.6,
"SO": 4.1,
"HR": 1.1,
"BF": 21.8,
"Pitches": 88.3
},
"rates": {
"ERA": 6.2027,
"WHIP": 1.5,
"ER_per_IP": 0.68919,
"H_per_IP": 0.97297,
"BB_per_IP": 0.52703,
"SO_per_IP": 0.83108,
"HR_per_IP": 0.22297
}
},
"season": {
"games": 21,
"totals": {
"IP": 112.2,
"ER": 50.0,
"R": 55.0,
"H": 94.0,
"BB": 36.0,
"SO": 112.0,
"HR": 20.0,
"BF": 459.0,
"Pitches": 1793.0
},
"per_game": {
"IP": 5.1,
"ER": 2.381,
"R": 2.619,
"H": 4.4762,
"BB": 1.7143,
"SO": 5.3333,
"HR": 0.9524,
"BF": 21.8571,
"Pitches": 85.381
},
"rates": {
"ERA": 3.9941,
"WHIP": 1.1538,
"ER_per_IP": 0.44379,
"H_per_IP": 0.83432,
"BB_per_IP": 0.31953,
"SO_per_IP": 0.99408,
"HR_per_IP": 0.17751
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.851,
"predicted_H": 4.494,
"predicted_BB": 2.787,
"predicted_SO": 4.85,
"predicted_HR": 0.996,
"predicted_ERA": 5.1351,
"predicted_WHIP": 1.4571
}
},
"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.0,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.851,
"final": 3.3465,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.494,
"final": 4.281,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 2.787,
"final": 3.3101,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.85,
"final": 3.6209,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.996,
"final": 0.9977,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.1351,
"final": 5.1351,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4571,
"final": 1.4571,
"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": 34,
"H": 48,
"BB": 26,
"SO": 41,
"HR": 11,
"ERA": 6.202702702702703,
"WHIP": 1.5,
"K9": 7.479729729729729,
"HR9": 2.0067567567567566,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 1.19604433151596,
"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": 4.0,
"predicted_SO": 2.0,
"predicted_HR": 1.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": "682243",
"player_name": "Bryce Miller",
"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": 4.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.3333,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_R": 4.0,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 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": 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": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 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": "SEA",
"games": 159,
"wins": 74,
"losses": 85,
"win_pct": 0.4654,
"runs_scored": 644.0,
"runs_allowed": 708.0,
"run_differential": -64.0,
"run_differential_per_game": -0.4025,
"avg_runs_scored": 4.0503,
"avg_runs_allowed": 4.4528,
"offense_index": 0.9047,
"defense_index": 1.0054,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 4.6,
"run_differential": -7.0
},
"available": true,
"quality_score": -0.1139
},
"opponent": {
"team": "LAA",
"games": 159,
"wins": 61,
"losses": 98,
"win_pct": 0.3836,
"runs_scored": 641.0,
"runs_allowed": 732.0,
"run_differential": -91.0,
"run_differential_per_game": -0.5723,
"avg_runs_scored": 4.0314,
"avg_runs_allowed": 4.6038,
"offense_index": 0.9005,
"defense_index": 0.9724,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 5.2,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.1693
},
"edges": {
"quality_edge": 0.0554,
"offense_edge": -0.0953,
"opponent_offense_edge": -0.0995,
"defense_strength": 0.0054,
"opponent_defense_weakness": 0.0276,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0064,
"run_prevention": 0.9808,
"strikeout": 1.0096
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "682243",
"profile": {
"available": true,
"pitcher_id": "682243",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 434.0,
"k_percent": 24.4,
"bb_percent": 7.8,
"woba": 0.306,
"xwoba": 0.295,
"sweet_spot_percent": 31.7,
"barrel_batted_rate": 7.8,
"hard_hit_percent": 32.0,
"avg_best_speed": 76.8613,
"avg_hyper_speed": 92.9426,
"whiff_percent": 25.3,
"swing_percent": 54.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3092,
"command_and_miss": 0.2343,
"regression_edge": 0.3143,
"xwoba_edge": 0.4571,
"barrel_edge": -0.1333,
"hard_hit_edge": 0.8429,
"whiff_edge": 0.0429,
"bb_edge": 0.325,
"pitch_design_score": 0.0394
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "682243",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 87,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 90.56804412225787,
"release_spin_rate": 2160.500947400786,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 90.56804412225787,
"release_spin_rate": 2160.500947400786,
"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.568,
"release_spin_rate": 2160.5009,
"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.0394,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.2817,
"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.2686,
"sample_weight": 1.0,
"run_prevention_factor": 0.9772,
"strikeout_factor": 1.0154,
"walk_factor": 0.974,
"homer_factor": 0.9632,
"woba_minus_xwoba": 0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "682243",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9772,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 0.9772,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 0.974,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9632,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0154,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 4,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 4,
"predicted_SO": 2,
"predicted_HR": 1,
"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."
}
],
"provenance": {
"prediction": "output/games/20260925_LAA@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"
}
} |
| 20260925 | 20260925_LAD@SF | away | Tarik Skubal | Tarik Skubal | True | 6.1 | 7.0 | 2 | 1 | 0 | -1 | 2/3 | 1/0 | 7/10 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.8483516483516484,
"WHIP": 0.989010989010989,
"IP": 151.2,
"games_started": null,
"games_pitched": 25,
"role_avg_IP": 6.067,
"recent_avg_IP": 6.2,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.6883,
"sample_weight": 1.0,
"run_prevention_factor": 0.9415,
"strikeout_factor": 1.0777,
"walk_factor": 0.908,
"homer_factor": 0.9467,
"regression_flag": "neutral",
"k_percent": 29.5,
"bb_percent": 4.5,
"woba": 0.27,
"xwoba": 0.271,
"barrel_percent": 6.9,
"hard_hit_percent": 35.5,
"whiff_percent": 31.1
},
"espn_rank": {
"rank": 17,
"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": "669373",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 25,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.0,
"ER": 9.0,
"R": 9.0,
"H": 29.0,
"BB": 6.0,
"SO": 30.0,
"HR": 2.0,
"BF": 124.0,
"Pitches": 455.0
},
"per_game": {
"IP": 6.1,
"ER": 1.8,
"R": 1.8,
"H": 5.8,
"BB": 1.2,
"SO": 6.0,
"HR": 0.4,
"BF": 24.8,
"Pitches": 91.0
},
"rates": {
"ERA": 2.6129,
"WHIP": 1.129,
"ER_per_IP": 0.29032,
"H_per_IP": 0.93548,
"BB_per_IP": 0.19355,
"SO_per_IP": 0.96774,
"HR_per_IP": 0.06452
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.2,
"ER": 21.0,
"R": 22.0,
"H": 53.0,
"BB": 14.0,
"SO": 66.0,
"HR": 4.0,
"BF": 248.0,
"Pitches": 942.0
},
"per_game": {
"IP": 6.0,
"ER": 2.1,
"R": 2.2,
"H": 5.3,
"BB": 1.4,
"SO": 6.6,
"HR": 0.4,
"BF": 24.8,
"Pitches": 94.2
},
"rates": {
"ERA": 3.0649,
"WHIP": 1.0865,
"ER_per_IP": 0.34054,
"H_per_IP": 0.85946,
"BB_per_IP": 0.22703,
"SO_per_IP": 1.07027,
"HR_per_IP": 0.06486
}
},
"season": {
"games": 25,
"totals": {
"IP": 151.2,
"ER": 48.0,
"R": 52.0,
"H": 123.0,
"BB": 27.0,
"SO": 176.0,
"HR": 14.0,
"BF": 597.0,
"Pitches": 2281.0
},
"per_game": {
"IP": 6.0,
"ER": 1.92,
"R": 2.08,
"H": 4.92,
"BB": 1.08,
"SO": 7.04,
"HR": 0.56,
"BF": 23.88,
"Pitches": 91.24
},
"rates": {
"ERA": 2.8484,
"WHIP": 0.989,
"ER_per_IP": 0.31648,
"H_per_IP": 0.81099,
"BB_per_IP": 0.17802,
"SO_per_IP": 1.16044,
"HR_per_IP": 0.09231
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 2.141,
"predicted_H": 5.567,
"predicted_BB": 1.431,
"predicted_SO": 6.332,
"predicted_HR": 0.515,
"predicted_ERA": 3.1177,
"predicted_WHIP": 1.1321
}
},
"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.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.141,
"final": 1.6613,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 5.567,
"final": 4.0673,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.431,
"final": 1.2498,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 6.332,
"final": 6.6128,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.515,
"final": 1.1393,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.1177,
"final": 3.1177,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1321,
"final": 1.1321,
"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": 21,
"H": 53,
"BB": 14,
"SO": 66,
"HR": 4,
"ERA": 3.064864864864865,
"WHIP": 1.0864864864864865,
"K9": 9.632432432432433,
"HR9": 0.5837837837837838,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.8326997369213652,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_BB": 1.0,
"predicted_SO": 7.0,
"predicted_HR": 2.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": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.1,
"predicted_ER": 1,
"predicted_H": 2,
"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": 1.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 6.3333,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.1,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"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": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 0,
"deboosted_metrics": 2,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 6.1,
"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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"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": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_HR",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 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": "LAD",
"games": 159,
"wins": 97,
"losses": 62,
"win_pct": 0.6101,
"runs_scored": 790.0,
"runs_allowed": 596.0,
"run_differential": 194.0,
"run_differential_per_game": 1.2201,
"avg_runs_scored": 4.9686,
"avg_runs_allowed": 3.7484,
"offense_index": 1.1098,
"defense_index": 1.1943,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 2.5,
"run_differential": 24.0
},
"available": true,
"quality_score": 0.3135
},
"opponent": {
"team": "SF",
"games": 159,
"wins": 65,
"losses": 94,
"win_pct": 0.4088,
"runs_scored": 665.0,
"runs_allowed": 749.0,
"run_differential": -84.0,
"run_differential_per_game": -0.5283,
"avg_runs_scored": 4.1824,
"avg_runs_allowed": 4.7107,
"offense_index": 0.9342,
"defense_index": 0.9504,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 4.6,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.2124
},
"edges": {
"quality_edge": 0.5259,
"offense_edge": 0.1098,
"opponent_offense_edge": -0.0658,
"defense_strength": 0.1943,
"opponent_defense_weakness": 0.0496,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0295,
"run_prevention": 0.9437,
"strikeout": 1.021
},
"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": 569.0,
"k_percent": 29.5,
"bb_percent": 4.5,
"woba": 0.27,
"xwoba": 0.271,
"sweet_spot_percent": 34.7,
"barrel_batted_rate": 6.9,
"hard_hit_percent": 35.5,
"avg_best_speed": 75.4445,
"avg_hyper_speed": 93.5394,
"whiff_percent": 31.1,
"swing_percent": 53.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.7398,
"command_and_miss": 1.0171,
"regression_edge": -0.0286,
"xwoba_edge": 1.1429,
"barrel_edge": 0.0667,
"hard_hit_edge": 0.3429,
"whiff_edge": 0.8714,
"bb_edge": 1.15,
"pitch_design_score": 0.155
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669373",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 95,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 95,
"pitch_usage": 0.0,
"release_speed": 92.63147798168428,
"release_spin_rate": 2173.3742821287633,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 95,
"pitch_usage": 0.0,
"release_speed": 92.63147798168428,
"release_spin_rate": 2173.3742821287633,
"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.6315,
"release_spin_rate": 2173.3743,
"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.155,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1071,
"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.6883,
"sample_weight": 1.0,
"run_prevention_factor": 0.9415,
"strikeout_factor": 1.0777,
"walk_factor": 0.908,
"homer_factor": 0.9467,
"woba_minus_xwoba": -0.001,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669373",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9415,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9415,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.908,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9467,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0777,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 2,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 22,
"Pitches": 102,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260925_LAD@SF.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_LAD@SF | home | Yunior Marte | Yunior Marte | True | 4.2 | 5.0 | 1 | 3 | 2 | -1 | 3/6 | 3/1 | 6/4 | Last 10 before this game (4 available){
"model_context": {
"embedded_season": {
"ERA": 4.655172413793104,
"WHIP": 1.396551724137931,
"IP": 19.1,
"games_started": null,
"games_pitched": 4,
"role_avg_IP": 4.667,
"recent_avg_IP": 4.667,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2317,
"sample_weight": 0.45,
"run_prevention_factor": 1.0197,
"strikeout_factor": 0.9612,
"walk_factor": 1.0153,
"homer_factor": 1.0496,
"regression_flag": "neutral",
"k_percent": 13.3,
"bb_percent": 10.8,
"woba": 0.342,
"xwoba": 0.336,
"barrel_percent": 11.1,
"hard_hit_percent": 41.3,
"whiff_percent": 18.6
},
"espn_rank": {
"rank": 707,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "805074",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 4,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 4,
"totals": {
"IP": 19.1,
"ER": 10.0,
"R": 10.0,
"H": 18.0,
"BB": 9.0,
"SO": 11.0,
"HR": 3.0,
"BF": 83.0,
"Pitches": 312.0
},
"per_game": {
"IP": 4.2,
"ER": 2.5,
"R": 2.5,
"H": 4.5,
"BB": 2.25,
"SO": 2.75,
"HR": 0.75,
"BF": 20.75,
"Pitches": 78.0
},
"rates": {
"ERA": 4.6552,
"WHIP": 1.3966,
"ER_per_IP": 0.51724,
"H_per_IP": 0.93103,
"BB_per_IP": 0.46552,
"SO_per_IP": 0.56897,
"HR_per_IP": 0.15517
}
},
"last_10": {
"games": 4,
"totals": {
"IP": 19.1,
"ER": 10.0,
"R": 10.0,
"H": 18.0,
"BB": 9.0,
"SO": 11.0,
"HR": 3.0,
"BF": 83.0,
"Pitches": 312.0
},
"per_game": {
"IP": 4.2,
"ER": 2.5,
"R": 2.5,
"H": 4.5,
"BB": 2.25,
"SO": 2.75,
"HR": 0.75,
"BF": 20.75,
"Pitches": 78.0
},
"rates": {
"ERA": 4.6552,
"WHIP": 1.3966,
"ER_per_IP": 0.51724,
"H_per_IP": 0.93103,
"BB_per_IP": 0.46552,
"SO_per_IP": 0.56897,
"HR_per_IP": 0.15517
}
},
"season": {
"games": 4,
"totals": {
"IP": 19.1,
"ER": 10.0,
"R": 10.0,
"H": 18.0,
"BB": 9.0,
"SO": 11.0,
"HR": 3.0,
"BF": 83.0,
"Pitches": 312.0
},
"per_game": {
"IP": 4.2,
"ER": 2.5,
"R": 2.5,
"H": 4.5,
"BB": 2.25,
"SO": 2.75,
"HR": 0.75,
"BF": 20.75,
"Pitches": 78.0
},
"rates": {
"ERA": 4.6552,
"WHIP": 1.3966,
"ER_per_IP": 0.51724,
"H_per_IP": 0.93103,
"BB_per_IP": 0.46552,
"SO_per_IP": 0.56897,
"HR_per_IP": 0.15517
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.402,
"predicted_H": 4.483,
"predicted_BB": 1.945,
"predicted_SO": 3.608,
"predicted_HR": 0.708,
"predicted_ERA": 4.6329,
"predicted_WHIP": 1.3774
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5847,
"form_weight": 0.4153,
"form_reliability": 0.4444,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.402,
"final": 2.7517,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.483,
"final": 3.6158,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.945,
"final": 2.5619,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 3.608,
"final": 5.0067,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.708,
"final": 1.4635,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.6329,
"final": 4.6329,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3774,
"final": 1.3774,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 19.1,
"ER": 10,
"H": 18,
"BB": 9,
"SO": 11,
"HR": 3,
"ERA": 4.655172413793103,
"WHIP": 1.3965517241379308,
"K9": 5.120689655172413,
"HR9": 1.3965517241379308,
"games_pitched": 4,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 4,
"error_prone": false
},
"games_count": 4,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 1.0124470698741688,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_BB": 3.0,
"predicted_SO": 6.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "805074",
"player_name": "Yunior Marte",
"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": 3.0,
"predicted_HR": 2.0,
"predicted_IP": 4.6667,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 2.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": "SF",
"games": 159,
"wins": 65,
"losses": 94,
"win_pct": 0.4088,
"runs_scored": 665.0,
"runs_allowed": 749.0,
"run_differential": -84.0,
"run_differential_per_game": -0.5283,
"avg_runs_scored": 4.1824,
"avg_runs_allowed": 4.7107,
"offense_index": 0.9342,
"defense_index": 0.9504,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 4.6,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.2124
},
"opponent": {
"team": "LAD",
"games": 159,
"wins": 97,
"losses": 62,
"win_pct": 0.6101,
"runs_scored": 790.0,
"runs_allowed": 596.0,
"run_differential": 194.0,
"run_differential_per_game": 1.2201,
"avg_runs_scored": 4.9686,
"avg_runs_allowed": 3.7484,
"offense_index": 1.1098,
"defense_index": 1.1943,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 2.5,
"run_differential": 24.0
},
"available": true,
"quality_score": 0.3135
},
"edges": {
"quality_edge": -0.5259,
"offense_edge": -0.0658,
"opponent_offense_edge": 0.1098,
"defense_strength": -0.0496,
"opponent_defense_weakness": -0.1943,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9731,
"run_prevention": 1.0488,
"strikeout": 0.9754
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "805074",
"profile": {
"available": true,
"pitcher_id": "805074",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 59.0,
"k_percent": 13.3,
"bb_percent": 10.8,
"woba": 0.342,
"xwoba": 0.336,
"sweet_spot_percent": 30.2,
"barrel_batted_rate": 11.1,
"hard_hit_percent": 41.3,
"avg_best_speed": 75.7741,
"avg_hyper_speed": 94.6032,
"whiff_percent": 18.6,
"swing_percent": 44.9
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.4937,
"command_and_miss": -0.9643,
"regression_edge": 0.1714,
"xwoba_edge": -0.7143,
"barrel_edge": -0.8667,
"hard_hit_edge": -0.4857,
"whiff_edge": -0.9143,
"bb_edge": -0.425,
"pitch_design_score": -0.0613
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "805074",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 71,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 71,
"pitch_usage": 0.0,
"release_speed": 88.76853497379813,
"release_spin_rate": 1889.510442161121,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 71,
"pitch_usage": 0.0,
"release_speed": 88.76853497379813,
"release_spin_rate": 1889.510442161121,
"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.7685,
"release_spin_rate": 1889.5104,
"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.0613,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4381,
"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.2317,
"sample_weight": 0.45,
"run_prevention_factor": 1.0197,
"strikeout_factor": 0.9612,
"walk_factor": 1.0153,
"homer_factor": 1.0496,
"woba_minus_xwoba": 0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "805074",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0089,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0089,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0069,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0223,
"adjusted": 1
},
"predicted_SO": {
"original": 2.0,
"factor": 0.9825,
"adjusted": 2
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 20,
"Pitches": 92,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 4 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260925_LAD@SF.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_NYM@WAS | away | Jefry Yan | Jefry Yan | True | 4.0 | 1.2 | -7 | 2 | 2 | 0 | 2/3 | 0/2 | 2/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.339285714285714,
"WHIP": 1.607142857142857,
"IP": 18.2,
"games_started": null,
"games_pitched": 17,
"role_avg_IP": 3.0,
"recent_avg_IP": 3.0,
"last_start_IP": 3.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1778,
"sample_weight": 0.45,
"run_prevention_factor": 0.9849,
"strikeout_factor": 1.0494,
"walk_factor": 1.0513,
"homer_factor": 0.9823,
"regression_flag": "neutral",
"k_percent": 29.6,
"bb_percent": 14.8,
"woba": 0.314,
"xwoba": 0.301,
"barrel_percent": 4.5,
"hard_hit_percent": 40.9,
"whiff_percent": 36.6
},
"espn_rank": {
"rank": 554,
"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": 3.821,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4332,
"prior_weight": 0.5668
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "642376",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 17,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 7.0,
"ER": 3.0,
"R": 3.0,
"H": 5.0,
"BB": 3.0,
"SO": 10.0,
"HR": 2.0,
"BF": 29.0,
"Pitches": 117.0
},
"per_game": {
"IP": 1.1,
"ER": 0.6,
"R": 0.6,
"H": 1.0,
"BB": 0.6,
"SO": 2.0,
"HR": 0.4,
"BF": 5.8,
"Pitches": 23.4
},
"rates": {
"ERA": 3.8571,
"WHIP": 1.1429,
"ER_per_IP": 0.42857,
"H_per_IP": 0.71429,
"BB_per_IP": 0.42857,
"SO_per_IP": 1.42857,
"HR_per_IP": 0.28571
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 12.1,
"ER": 6.0,
"R": 7.0,
"H": 11.0,
"BB": 7.0,
"SO": 18.0,
"HR": 2.0,
"BF": 56.0,
"Pitches": 220.0
},
"per_game": {
"IP": 1.1,
"ER": 0.6,
"R": 0.7,
"H": 1.1,
"BB": 0.7,
"SO": 1.8,
"HR": 0.2,
"BF": 5.6,
"Pitches": 22.0
},
"rates": {
"ERA": 4.3784,
"WHIP": 1.4595,
"ER_per_IP": 0.48649,
"H_per_IP": 0.89189,
"BB_per_IP": 0.56757,
"SO_per_IP": 1.45946,
"HR_per_IP": 0.16216
}
},
"season": {
"games": 17,
"totals": {
"IP": 18.2,
"ER": 9.0,
"R": 10.0,
"H": 17.0,
"BB": 13.0,
"SO": 25.0,
"HR": 3.0,
"BF": 86.0,
"Pitches": 330.0
},
"per_game": {
"IP": 1.0,
"ER": 0.5294,
"R": 0.5882,
"H": 1.0,
"BB": 0.7647,
"SO": 1.4706,
"HR": 0.1765,
"BF": 5.0588,
"Pitches": 19.4118
},
"rates": {
"ERA": 4.3393,
"WHIP": 1.6071,
"ER_per_IP": 0.48214,
"H_per_IP": 0.91071,
"BB_per_IP": 0.69643,
"SO_per_IP": 1.33929,
"HR_per_IP": 0.16071
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.1,
"predicted_ER": 1.564,
"predicted_H": 2.91,
"predicted_BB": 1.418,
"predicted_SO": 3.662,
"predicted_HR": 0.571,
"predicted_ERA": 4.4076,
"predicted_WHIP": 1.3553
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5895,
"form_weight": 0.4105,
"form_reliability": 0.4332,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.821,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4332,
"prior_weight": 0.5668
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 3.1,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.564,
"final": 1.821,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 2.91,
"final": 2.3736,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.418,
"final": 0.5821,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 3.662,
"final": 2.6823,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.571,
"final": 1.4134,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4076,
"final": 4.4076,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3553,
"final": 1.3553,
"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": 12.1,
"ER": 6,
"H": 11,
"BB": 7,
"SO": 18,
"HR": 2,
"ERA": 4.378378378378379,
"WHIP": 1.4594594594594597,
"K9": 13.135135135135137,
"HR9": 1.4594594594594597,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-24T00:00:00"
},
"recent_form_boost": 0.995814423658378,
"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": 2.0,
"predicted_BB": 0.0,
"predicted_SO": 2.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.821,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4332,
"prior_weight": 0.5668
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.0,
"predicted_ER": 2,
"predicted_H": 2,
"predicted_BB": 0,
"predicted_SO": 2,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "642376",
"player_name": "Jefry Yan",
"position": "Starter",
"team": "NYM",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 4.6667,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 4.0,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 4.0,
"predicted_R": 2.0,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYM",
"games": 159,
"wins": 73,
"losses": 86,
"win_pct": 0.4591,
"runs_scored": 682.0,
"runs_allowed": 717.0,
"run_differential": -35.0,
"run_differential_per_game": -0.2201,
"avg_runs_scored": 4.2893,
"avg_runs_allowed": 4.5094,
"offense_index": 0.9585,
"defense_index": 0.9924,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 4.0,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.0968
},
"opponent": {
"team": "WAS",
"games": 159,
"wins": 75,
"losses": 84,
"win_pct": 0.4717,
"runs_scored": 807.0,
"runs_allowed": 798.0,
"run_differential": 9.0,
"run_differential_per_game": 0.0566,
"avg_runs_scored": 5.0755,
"avg_runs_allowed": 5.0189,
"offense_index": 1.1342,
"defense_index": 0.8916,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 3.9,
"run_differential": 8.0
},
"available": true,
"quality_score": 0.0529
},
"edges": {
"quality_edge": -0.1497,
"offense_edge": -0.0415,
"opponent_offense_edge": 0.1342,
"defense_strength": -0.0076,
"opponent_defense_weakness": 0.1084,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9884,
"run_prevention": 1.0297,
"strikeout": 0.9848
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "642376",
"profile": {
"available": true,
"pitcher_id": "642376",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 70.0,
"k_percent": 29.6,
"bb_percent": 14.8,
"woba": 0.314,
"xwoba": 0.301,
"sweet_spot_percent": 31.8,
"barrel_batted_rate": 4.5,
"hard_hit_percent": 40.9,
"avg_best_speed": 76.1949,
"avg_hyper_speed": 94.2655,
"whiff_percent": 36.6,
"swing_percent": 46.2
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.2367,
"command_and_miss": 0.7836,
"regression_edge": 0.3714,
"xwoba_edge": 0.2857,
"barrel_edge": 0.6,
"hard_hit_edge": -0.4286,
"whiff_edge": 1.6571,
"bb_edge": -1.425,
"pitch_design_score": 0.272
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "642376",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 26,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 26,
"pitch_usage": 0.0,
"release_speed": 94.72026896051943,
"release_spin_rate": 2440.8606862686183,
"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": 26,
"pitch_usage": 0.0,
"release_speed": 94.72026896051943,
"release_spin_rate": 2440.8606862686183,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 94.7203,
"release_spin_rate": 2440.8607,
"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.272,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.9426,
"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.1778,
"sample_weight": 0.45,
"run_prevention_factor": 0.9849,
"strikeout_factor": 1.0494,
"walk_factor": 1.0513,
"homer_factor": 0.9823,
"woba_minus_xwoba": 0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "642376",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 0.0,
"factor": 0.9932,
"adjusted": 0
},
"predicted_H": {
"original": 0.0,
"factor": 0.9932,
"adjusted": 0
},
"predicted_BB": {
"original": 0.0,
"factor": 1.0231,
"adjusted": 0
},
"predicted_HR": {
"original": 0.0,
"factor": 0.992,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0222,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.0,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 2,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 14,
"Pitches": 60,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -7 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/20260925_NYM@WAS.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_NYM@WAS | home | Andrew Alvarez | Andrew Alvarez | True | 5.2 | 4.2 | -3 | 2 | 5 | 3 | 4/7 | 0/3 | 6/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.1666666666666665,
"WHIP": 1.2592592592592593,
"IP": 108.0,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 5.083,
"recent_avg_IP": 5.6,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0526,
"sample_weight": 1.0,
"run_prevention_factor": 0.9955,
"strikeout_factor": 1.0171,
"walk_factor": 1.032,
"homer_factor": 0.9792,
"regression_flag": "neutral",
"k_percent": 23.8,
"bb_percent": 10.7,
"woba": 0.288,
"xwoba": 0.31,
"barrel_percent": 5.5,
"hard_hit_percent": 39.7,
"whiff_percent": 26.2
},
"espn_rank": {
"rank": 48,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 108.0,
"season_ERA": 3.167,
"season_WHIP": 1.259,
"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": "674841",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.0,
"ER": 6.0,
"R": 6.0,
"H": 17.0,
"BB": 12.0,
"SO": 33.0,
"HR": 1.0,
"BF": 111.0,
"Pitches": 445.0
},
"per_game": {
"IP": 5.2,
"ER": 1.2,
"R": 1.2,
"H": 3.4,
"BB": 2.4,
"SO": 6.6,
"HR": 0.2,
"BF": 22.2,
"Pitches": 89.0
},
"rates": {
"ERA": 1.9286,
"WHIP": 1.0357,
"ER_per_IP": 0.21429,
"H_per_IP": 0.60714,
"BB_per_IP": 0.42857,
"SO_per_IP": 1.17857,
"HR_per_IP": 0.03571
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.2,
"ER": 13.0,
"R": 13.0,
"H": 33.0,
"BB": 23.0,
"SO": 52.0,
"HR": 3.0,
"BF": 217.0,
"Pitches": 827.0
},
"per_game": {
"IP": 5.1,
"ER": 1.3,
"R": 1.3,
"H": 3.3,
"BB": 2.3,
"SO": 5.2,
"HR": 0.3,
"BF": 21.7,
"Pitches": 82.7
},
"rates": {
"ERA": 2.1402,
"WHIP": 1.0244,
"ER_per_IP": 0.2378,
"H_per_IP": 0.60366,
"BB_per_IP": 0.42073,
"SO_per_IP": 0.95122,
"HR_per_IP": 0.05488
}
},
"season": {
"games": 24,
"totals": {
"IP": 108.0,
"ER": 38.0,
"R": 38.0,
"H": 88.0,
"BB": 48.0,
"SO": 107.0,
"HR": 5.0,
"BF": 450.0,
"Pitches": 1756.0
},
"per_game": {
"IP": 4.2,
"ER": 1.5833,
"R": 1.5833,
"H": 3.6667,
"BB": 2.0,
"SO": 4.4583,
"HR": 0.2083,
"BF": 18.75,
"Pitches": 73.1667
},
"rates": {
"ERA": 3.1667,
"WHIP": 1.2593,
"ER_per_IP": 0.35185,
"H_per_IP": 0.81481,
"BB_per_IP": 0.44444,
"SO_per_IP": 0.99074,
"HR_per_IP": 0.0463
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 1.596,
"predicted_H": 3.813,
"predicted_BB": 2.271,
"predicted_SO": 5.62,
"predicted_HR": 0.338,
"predicted_ERA": 2.658,
"predicted_WHIP": 1.1257
}
},
"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": 2.0,
"form": 1.596,
"final": 1.7668,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.813,
"final": 3.8921,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.271,
"final": 1.3107,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 5.62,
"final": 5.7807,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.338,
"final": 0.1951,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.658,
"final": 2.658,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1257,
"final": 1.1257,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 54.2,
"ER": 13,
"H": 33,
"BB": 23,
"SO": 52,
"HR": 3,
"ERA": 2.1402439024390243,
"WHIP": 1.024390243902439,
"K9": 8.560975609756097,
"HR9": 0.4939024390243902,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.727127472583857,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 0.0,
"predicted_SO": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 0,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "674841",
"player_name": "Andrew Alvarez",
"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": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 2.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 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": "WAS",
"games": 159,
"wins": 75,
"losses": 84,
"win_pct": 0.4717,
"runs_scored": 807.0,
"runs_allowed": 798.0,
"run_differential": 9.0,
"run_differential_per_game": 0.0566,
"avg_runs_scored": 5.0755,
"avg_runs_allowed": 5.0189,
"offense_index": 1.1342,
"defense_index": 0.8916,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 3.9,
"run_differential": 8.0
},
"available": true,
"quality_score": 0.0529
},
"opponent": {
"team": "NYM",
"games": 159,
"wins": 73,
"losses": 86,
"win_pct": 0.4591,
"runs_scored": 682.0,
"runs_allowed": 717.0,
"run_differential": -35.0,
"run_differential_per_game": -0.2201,
"avg_runs_scored": 4.2893,
"avg_runs_allowed": 4.5094,
"offense_index": 0.9585,
"defense_index": 0.9924,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 4.0,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.0968
},
"edges": {
"quality_edge": 0.1497,
"offense_edge": 0.1342,
"opponent_offense_edge": -0.0415,
"defense_strength": -0.1084,
"opponent_defense_weakness": 0.0076,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0044,
"run_prevention": 0.9967,
"strikeout": 1.0078
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "674841",
"profile": {
"available": true,
"pitcher_id": "674841",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 411.0,
"k_percent": 23.8,
"bb_percent": 10.7,
"woba": 0.288,
"xwoba": 0.31,
"sweet_spot_percent": 32.5,
"barrel_batted_rate": 5.5,
"hard_hit_percent": 39.7,
"avg_best_speed": 77.9064,
"avg_hyper_speed": 94.3329,
"whiff_percent": 26.2,
"swing_percent": 44.1
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1829,
"command_and_miss": 0.0957,
"regression_edge": -0.6286,
"xwoba_edge": 0.0286,
"barrel_edge": 0.3778,
"hard_hit_edge": -0.2571,
"whiff_edge": 0.1714,
"bb_edge": -0.4,
"pitch_design_score": -0.1483
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "674841",
"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": 87.21515384526589,
"release_spin_rate": 2496.6767478148677,
"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": 87.21515384526589,
"release_spin_rate": 2496.6767478148677,
"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.2152,
"release_spin_rate": 2496.6767,
"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.1483,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.0594,
"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.0526,
"sample_weight": 1.0,
"run_prevention_factor": 0.9955,
"strikeout_factor": 1.0171,
"walk_factor": 1.032,
"homer_factor": 0.9792,
"woba_minus_xwoba": -0.022,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "674841",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9955,
"adjusted": 1
},
"predicted_H": {
"original": 4.0,
"factor": 0.9955,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.032,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9792,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0171,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 6,
"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": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +3."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260925_NYM@WAS.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_PIT@DET | away | Bubba Chandler | Bubba Chandler | True | 5.0 | 2.2 | -7 | 3 | 6 | 3 | 4/4 | 1/4 | 7/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.341409691629956,
"WHIP": 1.3744493392070485,
"IP": 151.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.034,
"recent_avg_IP": 5.2,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0838,
"sample_weight": 1.0,
"run_prevention_factor": 1.0071,
"strikeout_factor": 0.9777,
"walk_factor": 1.05,
"homer_factor": 0.9922,
"regression_flag": "neutral",
"k_percent": 21.0,
"bb_percent": 11.6,
"woba": 0.313,
"xwoba": 0.316,
"barrel_percent": 6.2,
"hard_hit_percent": 38.9,
"whiff_percent": 22.1
},
"espn_rank": {
"rank": 120,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "696149",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 12.0,
"R": 13.0,
"H": 26.0,
"BB": 10.0,
"SO": 24.0,
"HR": 4.0,
"BF": 110.0,
"Pitches": 446.0
},
"per_game": {
"IP": 5.1,
"ER": 2.4,
"R": 2.6,
"H": 5.2,
"BB": 2.0,
"SO": 4.8,
"HR": 0.8,
"BF": 22.0,
"Pitches": 89.2
},
"rates": {
"ERA": 4.1538,
"WHIP": 1.3846,
"ER_per_IP": 0.46154,
"H_per_IP": 1.0,
"BB_per_IP": 0.38462,
"SO_per_IP": 0.92308,
"HR_per_IP": 0.15385
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.2,
"ER": 23.0,
"R": 27.0,
"H": 48.0,
"BB": 20.0,
"SO": 48.0,
"HR": 5.0,
"BF": 215.0,
"Pitches": 893.0
},
"per_game": {
"IP": 5.0,
"ER": 2.3,
"R": 2.7,
"H": 4.8,
"BB": 2.0,
"SO": 4.8,
"HR": 0.5,
"BF": 21.5,
"Pitches": 89.3
},
"rates": {
"ERA": 4.0855,
"WHIP": 1.3421,
"ER_per_IP": 0.45395,
"H_per_IP": 0.94737,
"BB_per_IP": 0.39474,
"SO_per_IP": 0.94737,
"HR_per_IP": 0.09868
}
},
"season": {
"games": 30,
"totals": {
"IP": 151.1,
"ER": 73.0,
"R": 83.0,
"H": 132.0,
"BB": 76.0,
"SO": 138.0,
"HR": 15.0,
"BF": 657.0,
"Pitches": 2609.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4333,
"R": 2.7667,
"H": 4.4,
"BB": 2.5333,
"SO": 4.6,
"HR": 0.5,
"BF": 21.9,
"Pitches": 86.9667
},
"rates": {
"ERA": 4.3414,
"WHIP": 1.3744,
"ER_per_IP": 0.48238,
"H_per_IP": 0.87225,
"BB_per_IP": 0.5022,
"SO_per_IP": 0.91189,
"HR_per_IP": 0.09912
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.411,
"predicted_H": 4.924,
"predicted_BB": 2.087,
"predicted_SO": 4.772,
"predicted_HR": 0.652,
"predicted_ERA": 4.2314,
"predicted_WHIP": 1.3669
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.411,
"final": 2.6527,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.924,
"final": 4.5448,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.087,
"final": 1.6409,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.772,
"final": 5.6863,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.652,
"final": 0.7948,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.2314,
"final": 4.2314,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3669,
"final": 1.3669,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 50.2,
"ER": 23,
"H": 48,
"BB": 20,
"SO": 48,
"HR": 5,
"ERA": 4.0855263157894735,
"WHIP": 1.3421052631578947,
"K9": 8.526315789473685,
"HR9": 0.8881578947368421,
"games_pitched": 10,
"quality_starts": 2,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.9539146195671689,
"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": 1.0,
"predicted_SO": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "696149",
"player_name": "Bubba Chandler",
"position": "Starter",
"team": "PIT",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PIT",
"games": 159,
"wins": 81,
"losses": 78,
"win_pct": 0.5094,
"runs_scored": 753.0,
"runs_allowed": 725.0,
"run_differential": 28.0,
"run_differential_per_game": 0.1761,
"avg_runs_scored": 4.7358,
"avg_runs_allowed": 4.5597,
"offense_index": 1.0583,
"defense_index": 0.9814,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 3.6,
"run_differential": 3.0
},
"available": true,
"quality_score": 0.0996
},
"opponent": {
"team": "DET",
"games": 159,
"wins": 74,
"losses": 85,
"win_pct": 0.4654,
"runs_scored": 709.0,
"runs_allowed": 638.0,
"run_differential": 71.0,
"run_differential_per_game": 0.4465,
"avg_runs_scored": 4.4591,
"avg_runs_allowed": 4.0126,
"offense_index": 0.9964,
"defense_index": 1.1153,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 4.2,
"run_differential": 1.0
},
"available": true,
"quality_score": -0.0095
},
"edges": {
"quality_edge": 0.1091,
"offense_edge": 0.0583,
"opponent_offense_edge": -0.0036,
"defense_strength": -0.0186,
"opponent_defense_weakness": -0.1153,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0039,
"run_prevention": 0.9958,
"strikeout": 1.0036
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "696149",
"profile": {
"available": true,
"pitcher_id": "696149",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 634.0,
"k_percent": 21.0,
"bb_percent": 11.6,
"woba": 0.313,
"xwoba": 0.316,
"sweet_spot_percent": 31.0,
"barrel_batted_rate": 6.2,
"hard_hit_percent": 38.9,
"avg_best_speed": 78.6137,
"avg_hyper_speed": 93.9769,
"whiff_percent": 22.1,
"swing_percent": 46.9
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.019,
"command_and_miss": -0.3343,
"regression_edge": -0.0857,
"xwoba_edge": -0.1429,
"barrel_edge": 0.2222,
"hard_hit_edge": -0.1429,
"whiff_edge": -0.4143,
"bb_edge": -0.625,
"pitch_design_score": 0.2792
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "696149",
"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": 94.85024086236014,
"release_spin_rate": 2332.2239071943923,
"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": 94.85024086236014,
"release_spin_rate": 2332.2239071943923,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 94.8502,
"release_spin_rate": 2332.2239,
"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.2792,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.9946,
"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.0838,
"sample_weight": 1.0,
"run_prevention_factor": 1.0071,
"strikeout_factor": 0.9777,
"walk_factor": 1.05,
"homer_factor": 0.9922,
"woba_minus_xwoba": -0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "696149",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0071,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0071,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.05,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9922,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9777,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 20,
"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": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -7 outs from the projected workload."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +3."
}
],
"provenance": {
"prediction": "output/games/20260925_PIT@DET.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_PIT@DET | home | Jackson Jobe | Jackson Jobe | True | 5.1 | 5.1 | 0 | 2 | 2 | 0 | 2/3 | 3/2 | 5/8 | Last 10 before this game (8 available){
"model_context": {
"embedded_season": {
"ERA": 3.9836065573770494,
"WHIP": 1.2049180327868854,
"IP": 40.2,
"games_started": null,
"games_pitched": 8,
"role_avg_IP": 5.083,
"recent_avg_IP": 5.333,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0325,
"sample_weight": 0.588,
"run_prevention_factor": 0.9972,
"strikeout_factor": 1.005,
"walk_factor": 0.9882,
"homer_factor": 1.0204,
"regression_flag": "neutral",
"k_percent": 25.0,
"bb_percent": 8.1,
"woba": 0.324,
"xwoba": 0.312,
"barrel_percent": 10.0,
"hard_hit_percent": 35.1,
"whiff_percent": 23.5
},
"espn_rank": {
"rank": 269,
"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": "695549",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 8,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.2,
"ER": 11.0,
"R": 12.0,
"H": 21.0,
"BB": 9.0,
"SO": 32.0,
"HR": 5.0,
"BF": 111.0,
"Pitches": 454.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2,
"R": 2.4,
"H": 4.2,
"BB": 1.8,
"SO": 6.4,
"HR": 1.0,
"BF": 22.2,
"Pitches": 90.8
},
"rates": {
"ERA": 3.7125,
"WHIP": 1.125,
"ER_per_IP": 0.4125,
"H_per_IP": 0.7875,
"BB_per_IP": 0.3375,
"SO_per_IP": 1.2,
"HR_per_IP": 0.1875
}
},
"last_10": {
"games": 8,
"totals": {
"IP": 40.2,
"ER": 18.0,
"R": 19.0,
"H": 35.0,
"BB": 14.0,
"SO": 43.0,
"HR": 7.0,
"BF": 172.0,
"Pitches": 685.0
},
"per_game": {
"IP": 5.0,
"ER": 2.25,
"R": 2.375,
"H": 4.375,
"BB": 1.75,
"SO": 5.375,
"HR": 0.875,
"BF": 21.5,
"Pitches": 85.625
},
"rates": {
"ERA": 3.9836,
"WHIP": 1.2049,
"ER_per_IP": 0.44262,
"H_per_IP": 0.86066,
"BB_per_IP": 0.34426,
"SO_per_IP": 1.05738,
"HR_per_IP": 0.17213
}
},
"season": {
"games": 8,
"totals": {
"IP": 40.2,
"ER": 18.0,
"R": 19.0,
"H": 35.0,
"BB": 14.0,
"SO": 43.0,
"HR": 7.0,
"BF": 172.0,
"Pitches": 685.0
},
"per_game": {
"IP": 5.0,
"ER": 2.25,
"R": 2.375,
"H": 4.375,
"BB": 1.75,
"SO": 5.375,
"HR": 0.875,
"BF": 21.5,
"Pitches": 85.625
},
"rates": {
"ERA": 3.9836,
"WHIP": 1.2049,
"ER_per_IP": 0.44262,
"H_per_IP": 0.86066,
"BB_per_IP": 0.34426,
"SO_per_IP": 1.05738,
"HR_per_IP": 0.17213
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.407,
"predicted_H": 4.623,
"predicted_BB": 1.867,
"predicted_SO": 5.641,
"predicted_HR": 0.894,
"predicted_ERA": 4.1127,
"predicted_WHIP": 1.2318
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5125,
"form_weight": 0.4875,
"form_reliability": 0.6154,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6154,
"prior_weight": 0.3846
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.407,
"final": 2.1984,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.623,
"final": 3.2787,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.867,
"final": 2.4477,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 5.641,
"final": 5.3125,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.894,
"final": 0.9483,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1127,
"final": 4.1127,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2318,
"final": 1.2318,
"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": 40.2,
"ER": 18,
"H": 35,
"BB": 14,
"SO": 43,
"HR": 7,
"ERA": 3.9836065573770494,
"WHIP": 1.2049180327868854,
"K9": 9.51639344262295,
"HR9": 1.5491803278688525,
"games_pitched": 8,
"quality_starts": 2,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 8,
"error_prone": false
},
"games_count": 8,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.939018965986496,
"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": 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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "695549",
"player_name": "Jackson Jobe",
"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": 3.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.3333,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 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": 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": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 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": "DET",
"games": 159,
"wins": 74,
"losses": 85,
"win_pct": 0.4654,
"runs_scored": 709.0,
"runs_allowed": 638.0,
"run_differential": 71.0,
"run_differential_per_game": 0.4465,
"avg_runs_scored": 4.4591,
"avg_runs_allowed": 4.0126,
"offense_index": 0.9964,
"defense_index": 1.1153,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 4.2,
"run_differential": 1.0
},
"available": true,
"quality_score": -0.0095
},
"opponent": {
"team": "PIT",
"games": 159,
"wins": 81,
"losses": 78,
"win_pct": 0.5094,
"runs_scored": 753.0,
"runs_allowed": 725.0,
"run_differential": 28.0,
"run_differential_per_game": 0.1761,
"avg_runs_scored": 4.7358,
"avg_runs_allowed": 4.5597,
"offense_index": 1.0583,
"defense_index": 0.9814,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 3.6,
"run_differential": 3.0
},
"available": true,
"quality_score": 0.0996
},
"edges": {
"quality_edge": -0.1091,
"offense_edge": -0.0036,
"opponent_offense_edge": 0.0583,
"defense_strength": 0.1153,
"opponent_defense_weakness": 0.0186,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9968,
"run_prevention": 1.0033,
"strikeout": 0.9921
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "695549",
"profile": {
"available": true,
"pitcher_id": "695549",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 147.0,
"k_percent": 25.0,
"bb_percent": 8.1,
"woba": 0.324,
"xwoba": 0.312,
"sweet_spot_percent": 28.8,
"barrel_batted_rate": 10.0,
"hard_hit_percent": 35.1,
"avg_best_speed": 77.6832,
"avg_hyper_speed": 93.5876,
"whiff_percent": 23.5,
"swing_percent": 48.5
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0624,
"command_and_miss": 0.1679,
"regression_edge": 0.3429,
"xwoba_edge": -0.0286,
"barrel_edge": -0.6222,
"hard_hit_edge": 0.4,
"whiff_edge": -0.2143,
"bb_edge": 0.25,
"pitch_design_score": 0.1548
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "695549",
"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": 92.62807063256204,
"release_spin_rate": 2465.384813235495,
"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": 92.62807063256204,
"release_spin_rate": 2465.384813235495,
"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.6281,
"release_spin_rate": 2465.3848,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1548,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1058,
"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.0325,
"sample_weight": 0.588,
"run_prevention_factor": 0.9972,
"strikeout_factor": 1.005,
"walk_factor": 0.9882,
"homer_factor": 1.0204,
"woba_minus_xwoba": 0.012,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "695549",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9984,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9984,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9931,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.012,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0029,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"Pitches": 92,
"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 +0."
}
],
"provenance": {
"prediction": "output/games/20260925_PIT@DET.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_STL@MIL | away | Michael McGreevy | Michael McGreevy | True | 5.1 | 4.2 | -2 | 2 | 4 | 2 | 6/9 | 0/2 | 7/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.841463414634146,
"WHIP": 1.25,
"IP": 164.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.467,
"recent_avg_IP": 5.333,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.5664,
"sample_weight": 1.0,
"run_prevention_factor": 1.0481,
"strikeout_factor": 0.9423,
"walk_factor": 0.954,
"homer_factor": 1.0885,
"regression_flag": "negative_pitcher_regression",
"k_percent": 16.7,
"bb_percent": 6.8,
"woba": 0.316,
"xwoba": 0.35,
"barrel_percent": 9.3,
"hard_hit_percent": 41.0,
"whiff_percent": 20.2
},
"espn_rank": {
"rank": 94,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "700241",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.2,
"ER": 16.0,
"R": 17.0,
"H": 29.0,
"BB": 10.0,
"SO": 18.0,
"HR": 3.0,
"BF": 119.0,
"Pitches": 457.0
},
"per_game": {
"IP": 5.1,
"ER": 3.2,
"R": 3.4,
"H": 5.8,
"BB": 2.0,
"SO": 3.6,
"HR": 0.6,
"BF": 23.8,
"Pitches": 91.4
},
"rates": {
"ERA": 5.4,
"WHIP": 1.4625,
"ER_per_IP": 0.6,
"H_per_IP": 1.0875,
"BB_per_IP": 0.375,
"SO_per_IP": 0.675,
"HR_per_IP": 0.1125
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.2,
"ER": 31.0,
"R": 35.0,
"H": 57.0,
"BB": 19.0,
"SO": 39.0,
"HR": 6.0,
"BF": 223.0,
"Pitches": 905.0
},
"per_game": {
"IP": 5.0,
"ER": 3.1,
"R": 3.5,
"H": 5.7,
"BB": 1.9,
"SO": 3.9,
"HR": 0.6,
"BF": 22.3,
"Pitches": 90.5
},
"rates": {
"ERA": 5.6174,
"WHIP": 1.5302,
"ER_per_IP": 0.62416,
"H_per_IP": 1.14765,
"BB_per_IP": 0.38255,
"SO_per_IP": 0.78523,
"HR_per_IP": 0.12081
}
},
"season": {
"games": 30,
"totals": {
"IP": 164.0,
"ER": 70.0,
"R": 75.0,
"H": 159.0,
"BB": 46.0,
"SO": 113.0,
"HR": 21.0,
"BF": 677.0,
"Pitches": 2682.0
},
"per_game": {
"IP": 5.1,
"ER": 2.3333,
"R": 2.5,
"H": 5.3,
"BB": 1.5333,
"SO": 3.7667,
"HR": 0.7,
"BF": 22.5667,
"Pitches": 89.4
},
"rates": {
"ERA": 3.8415,
"WHIP": 1.25,
"ER_per_IP": 0.42683,
"H_per_IP": 0.96951,
"BB_per_IP": 0.28049,
"SO_per_IP": 0.68902,
"HR_per_IP": 0.12805
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.957,
"predicted_H": 5.603,
"predicted_BB": 1.892,
"predicted_SO": 3.914,
"predicted_HR": 0.643,
"predicted_ERA": 5.0859,
"predicted_WHIP": 1.432
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.957,
"final": 2.5643,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.603,
"final": 5.7659,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.892,
"final": 1.1156,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 3.914,
"final": 5.1804,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.643,
"final": 0.7895,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.0859,
"final": 5.0859,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.432,
"final": 1.432,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 49.2,
"ER": 31,
"H": 57,
"BB": 19,
"SO": 39,
"HR": 6,
"ERA": 5.61744966442953,
"WHIP": 1.530201342281879,
"K9": 7.067114093959731,
"HR9": 1.087248322147651,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 1.1309583982672748,
"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": 6.0,
"predicted_BB": 0.0,
"predicted_SO": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "700241",
"player_name": "Michael McGreevy",
"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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.3333,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 1.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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.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": "STL",
"games": 159,
"wins": 77,
"losses": 82,
"win_pct": 0.4843,
"runs_scored": 710.0,
"runs_allowed": 732.0,
"run_differential": -22.0,
"run_differential_per_game": -0.1384,
"avg_runs_scored": 4.4654,
"avg_runs_allowed": 4.6038,
"offense_index": 0.9979,
"defense_index": 0.972,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.0,
"avg_runs_allowed": 4.3,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.0654
},
"opponent": {
"team": "MIL",
"games": 159,
"wins": 100,
"losses": 59,
"win_pct": 0.6289,
"runs_scored": 815.0,
"runs_allowed": 608.0,
"run_differential": 207.0,
"run_differential_per_game": 1.3019,
"avg_runs_scored": 5.1258,
"avg_runs_allowed": 3.8239,
"offense_index": 1.1454,
"defense_index": 1.1703,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 2.9,
"run_differential": 11.0
},
"available": true,
"quality_score": 0.3396
},
"edges": {
"quality_edge": -0.405,
"offense_edge": -0.0021,
"opponent_offense_edge": 0.1454,
"defense_strength": -0.028,
"opponent_defense_weakness": -0.1703,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9771,
"run_prevention": 1.0463,
"strikeout": 0.9762
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "700241",
"profile": {
"available": true,
"pitcher_id": "700241",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 631.0,
"k_percent": 16.7,
"bb_percent": 6.8,
"woba": 0.316,
"xwoba": 0.35,
"sweet_spot_percent": 34.4,
"barrel_batted_rate": 9.3,
"hard_hit_percent": 41.0,
"avg_best_speed": 79.0662,
"avg_hyper_speed": 94.6102,
"whiff_percent": 20.2,
"swing_percent": 44.7
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.5996,
"command_and_miss": -0.4657,
"regression_edge": -0.9714,
"xwoba_edge": -1.1143,
"barrel_edge": -0.4667,
"hard_hit_edge": -0.4429,
"whiff_edge": -0.6857,
"bb_edge": 0.575,
"pitch_design_score": -0.1553
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "700241",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 91,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 91,
"pitch_usage": 0.0,
"release_speed": 87.09044867462653,
"release_spin_rate": 2200.553287077531,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 91,
"pitch_usage": 0.0,
"release_speed": 87.09044867462653,
"release_spin_rate": 2200.553287077531,
"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.0904,
"release_spin_rate": 2200.5533,
"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.1553,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.1093,
"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.5664,
"sample_weight": 1.0,
"run_prevention_factor": 1.0481,
"strikeout_factor": 0.9423,
"walk_factor": 0.954,
"homer_factor": 1.0885,
"woba_minus_xwoba": -0.034,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "700241",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0481,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0481,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.954,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0885,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9423,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 6,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"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/20260925_STL@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"
}
} |
| 20260925 | 20260925_STL@MIL | home | Robert Gasser | Robert Gasser | True | 5.0 | 6.0 | 3 | 3 | 1 | -2 | 3/1 | 0/1 | 4/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.006451612903226,
"WHIP": 1.238709677419355,
"IP": 103.1,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 5.158,
"recent_avg_IP": 4.933,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0877,
"sample_weight": 1.0,
"run_prevention_factor": 1.0075,
"strikeout_factor": 0.98,
"walk_factor": 0.968,
"homer_factor": 0.989,
"regression_flag": "neutral",
"k_percent": 21.3,
"bb_percent": 7.5,
"woba": 0.317,
"xwoba": 0.322,
"barrel_percent": 7.5,
"hard_hit_percent": 33.4,
"whiff_percent": 22.2
},
"espn_rank": {
"rank": 187,
"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": "688107",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.1,
"ER": 5.0,
"R": 6.0,
"H": 18.0,
"BB": 11.0,
"SO": 22.0,
"HR": 1.0,
"BF": 109.0,
"Pitches": 437.0
},
"per_game": {
"IP": 5.1,
"ER": 1.0,
"R": 1.2,
"H": 3.6,
"BB": 2.2,
"SO": 4.4,
"HR": 0.2,
"BF": 21.8,
"Pitches": 87.4
},
"rates": {
"ERA": 1.7089,
"WHIP": 1.1013,
"ER_per_IP": 0.18987,
"H_per_IP": 0.68354,
"BB_per_IP": 0.41772,
"SO_per_IP": 0.83544,
"HR_per_IP": 0.03797
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.0,
"ER": 18.0,
"R": 19.0,
"H": 46.0,
"BB": 20.0,
"SO": 46.0,
"HR": 3.0,
"BF": 224.0,
"Pitches": 863.0
},
"per_game": {
"IP": 5.1,
"ER": 1.8,
"R": 1.9,
"H": 4.6,
"BB": 2.0,
"SO": 4.6,
"HR": 0.3,
"BF": 22.4,
"Pitches": 86.3
},
"rates": {
"ERA": 3.1154,
"WHIP": 1.2692,
"ER_per_IP": 0.34615,
"H_per_IP": 0.88462,
"BB_per_IP": 0.38462,
"SO_per_IP": 0.88462,
"HR_per_IP": 0.05769
}
},
"season": {
"games": 20,
"totals": {
"IP": 103.1,
"ER": 46.0,
"R": 48.0,
"H": 94.0,
"BB": 34.0,
"SO": 94.0,
"HR": 14.0,
"BF": 443.0,
"Pitches": 1730.0
},
"per_game": {
"IP": 5.1,
"ER": 2.3,
"R": 2.4,
"H": 4.7,
"BB": 1.7,
"SO": 4.7,
"HR": 0.7,
"BF": 22.15,
"Pitches": 86.5
},
"rates": {
"ERA": 4.0065,
"WHIP": 1.2387,
"ER_per_IP": 0.44516,
"H_per_IP": 0.90968,
"BB_per_IP": 0.32903,
"SO_per_IP": 0.90968,
"HR_per_IP": 0.13548
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 1.786,
"predicted_H": 4.404,
"predicted_BB": 2.034,
"predicted_SO": 4.642,
"predicted_HR": 0.428,
"predicted_ERA": 3.0516,
"predicted_WHIP": 1.2225
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4345,
"form_weight": 0.5655,
"form_reliability": 0.8,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.1,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.786,
"final": 2.3135,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.404,
"final": 3.794,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.034,
"final": 1.1502,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.642,
"final": 4.3631,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.428,
"final": 0.242,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.0516,
"final": 3.0516,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2225,
"final": 1.2225,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 52.0,
"ER": 18,
"H": 46,
"BB": 20,
"SO": 46,
"HR": 3,
"ERA": 3.1153846153846154,
"WHIP": 1.2692307692307692,
"K9": 7.961538461538462,
"HR9": 0.5192307692307693,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.8429518159234443,
"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": 3.0,
"predicted_BB": 0.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "688107",
"player_name": "Robert Gasser",
"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": 0.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIL",
"games": 159,
"wins": 100,
"losses": 59,
"win_pct": 0.6289,
"runs_scored": 815.0,
"runs_allowed": 608.0,
"run_differential": 207.0,
"run_differential_per_game": 1.3019,
"avg_runs_scored": 5.1258,
"avg_runs_allowed": 3.8239,
"offense_index": 1.1454,
"defense_index": 1.1703,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 2.9,
"run_differential": 11.0
},
"available": true,
"quality_score": 0.3396
},
"opponent": {
"team": "STL",
"games": 159,
"wins": 77,
"losses": 82,
"win_pct": 0.4843,
"runs_scored": 710.0,
"runs_allowed": 732.0,
"run_differential": -22.0,
"run_differential_per_game": -0.1384,
"avg_runs_scored": 4.4654,
"avg_runs_allowed": 4.6038,
"offense_index": 0.9979,
"defense_index": 0.972,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.0,
"avg_runs_allowed": 4.3,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.0654
},
"edges": {
"quality_edge": 0.405,
"offense_edge": 0.1454,
"opponent_offense_edge": -0.0021,
"defense_strength": 0.1703,
"opponent_defense_weakness": 0.028,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0214,
"run_prevention": 0.9624,
"strikeout": 1.0123
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "688107",
"profile": {
"available": true,
"pitcher_id": "688107",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 414.0,
"k_percent": 21.3,
"bb_percent": 7.5,
"woba": 0.317,
"xwoba": 0.322,
"sweet_spot_percent": 37.7,
"barrel_batted_rate": 7.5,
"hard_hit_percent": 33.4,
"avg_best_speed": 74.7052,
"avg_hyper_speed": 93.1368,
"whiff_percent": 22.2,
"swing_percent": 49.8
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0705,
"command_and_miss": -0.105,
"regression_edge": -0.1429,
"xwoba_edge": -0.3143,
"barrel_edge": -0.0667,
"hard_hit_edge": 0.6429,
"whiff_edge": -0.4,
"bb_edge": 0.4,
"pitch_design_score": -0.0829
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "688107",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 81,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 88.38349307541424,
"release_spin_rate": 2279.059113316552,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 88.38349307541424,
"release_spin_rate": 2279.059113316552,
"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.3835,
"release_spin_rate": 2279.0591,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.0829,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5921,
"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.0877,
"sample_weight": 1.0,
"run_prevention_factor": 1.0075,
"strikeout_factor": 0.98,
"walk_factor": 0.968,
"homer_factor": 0.989,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "688107",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0075,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0075,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.968,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.989,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 0.98,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 19,
"Pitches": 84,
"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/20260925_STL@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"
}
} |
| 20260925 | 20260925_TB@PHI | away | Freddy Peralta | Freddy Peralta | True | 5.2 | 5.1 | -1 | 5 | 0 | -5 | 5/4 | 2/3 | 6/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.564154786150713,
"WHIP": 1.3258655804480652,
"IP": 163.2,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.28,
"recent_avg_IP": 5.733,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1418,
"sample_weight": 1.0,
"run_prevention_factor": 0.9879,
"strikeout_factor": 1.004,
"walk_factor": 0.988,
"homer_factor": 0.9669,
"regression_flag": "neutral",
"k_percent": 21.5,
"bb_percent": 8.5,
"woba": 0.325,
"xwoba": 0.302,
"barrel_percent": 5.9,
"hard_hit_percent": 37.5,
"whiff_percent": 26.2
},
"espn_rank": {
"rank": 287,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "642547",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.2,
"ER": 3.0,
"R": 3.0,
"H": 14.0,
"BB": 6.0,
"SO": 23.0,
"HR": 1.0,
"BF": 107.0,
"Pitches": 430.0
},
"per_game": {
"IP": 5.2,
"ER": 0.6,
"R": 0.6,
"H": 2.8,
"BB": 1.2,
"SO": 4.6,
"HR": 0.2,
"BF": 21.4,
"Pitches": 86.0
},
"rates": {
"ERA": 0.9419,
"WHIP": 0.6977,
"ER_per_IP": 0.10465,
"H_per_IP": 0.48837,
"BB_per_IP": 0.2093,
"SO_per_IP": 0.80233,
"HR_per_IP": 0.03488
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.0,
"ER": 22.0,
"R": 23.0,
"H": 43.0,
"BB": 14.0,
"SO": 42.0,
"HR": 6.0,
"BF": 216.0,
"Pitches": 866.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2,
"R": 2.3,
"H": 4.3,
"BB": 1.4,
"SO": 4.2,
"HR": 0.6,
"BF": 21.6,
"Pitches": 86.6
},
"rates": {
"ERA": 3.6667,
"WHIP": 1.0556,
"ER_per_IP": 0.40741,
"H_per_IP": 0.7963,
"BB_per_IP": 0.25926,
"SO_per_IP": 0.77778,
"HR_per_IP": 0.11111
}
},
"season": {
"games": 31,
"totals": {
"IP": 163.2,
"ER": 83.0,
"R": 91.0,
"H": 157.0,
"BB": 60.0,
"SO": 152.0,
"HR": 23.0,
"BF": 708.0,
"Pitches": 2866.0
},
"per_game": {
"IP": 5.1,
"ER": 2.6774,
"R": 2.9355,
"H": 5.0645,
"BB": 1.9355,
"SO": 4.9032,
"HR": 0.7419,
"BF": 22.8387,
"Pitches": 92.4516
},
"rates": {
"ERA": 4.5642,
"WHIP": 1.3259,
"ER_per_IP": 0.50713,
"H_per_IP": 0.95927,
"BB_per_IP": 0.3666,
"SO_per_IP": 0.92872,
"HR_per_IP": 0.14053
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 1.773,
"predicted_H": 4.028,
"predicted_BB": 1.514,
"predicted_SO": 4.602,
"predicted_HR": 0.506,
"predicted_ERA": 2.8972,
"predicted_WHIP": 1.006
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 1.773,
"final": 2.6831,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.028,
"final": 4.4252,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.514,
"final": 1.7126,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.602,
"final": 4.7647,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.506,
"final": 0.7079,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.8972,
"final": 2.8972,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.006,
"final": 1.006,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 54.0,
"ER": 22,
"H": 43,
"BB": 14,
"SO": 42,
"HR": 6,
"ERA": 3.6666666666666665,
"WHIP": 1.0555555555555556,
"K9": 7.0,
"HR9": 1.0,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.8996291663507947,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 5.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "642547",
"player_name": "Freddy Peralta",
"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": 4.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.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": 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": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"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": "TB",
"games": 159,
"wins": 96,
"losses": 63,
"win_pct": 0.6038,
"runs_scored": 719.0,
"runs_allowed": 642.0,
"run_differential": 77.0,
"run_differential_per_game": 0.4843,
"avg_runs_scored": 4.522,
"avg_runs_allowed": 4.0377,
"offense_index": 1.0105,
"defense_index": 1.1083,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 2.9,
"run_differential": 8.0
},
"available": true,
"quality_score": 0.1828
},
"opponent": {
"team": "PHI",
"games": 159,
"wins": 87,
"losses": 72,
"win_pct": 0.5472,
"runs_scored": 705.0,
"runs_allowed": 681.0,
"run_differential": 24.0,
"run_differential_per_game": 0.1509,
"avg_runs_scored": 4.434,
"avg_runs_allowed": 4.283,
"offense_index": 0.9908,
"defense_index": 1.0448,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 4.1,
"run_differential": -2.0
},
"available": true,
"quality_score": 0.0587
},
"edges": {
"quality_edge": 0.1241,
"offense_edge": 0.0105,
"opponent_offense_edge": -0.0092,
"defense_strength": 0.1083,
"opponent_defense_weakness": -0.0448,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0086,
"run_prevention": 0.9815,
"strikeout": 1.0045
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "642547",
"profile": {
"available": true,
"pitcher_id": "642547",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 683.0,
"k_percent": 21.5,
"bb_percent": 8.5,
"woba": 0.325,
"xwoba": 0.302,
"sweet_spot_percent": 35.7,
"barrel_batted_rate": 5.9,
"hard_hit_percent": 37.5,
"avg_best_speed": 76.202,
"avg_hyper_speed": 93.4872,
"whiff_percent": 26.2,
"swing_percent": 47.7
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1134,
"command_and_miss": 0.0579,
"regression_edge": 0.6571,
"xwoba_edge": 0.2571,
"barrel_edge": 0.2889,
"hard_hit_edge": 0.0571,
"whiff_edge": 0.1714,
"bb_edge": 0.15,
"pitch_design_score": -0.0308
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "642547",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 86,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 89.31293809090894,
"release_spin_rate": 2298.363391166723,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 89.31293809090894,
"release_spin_rate": 2298.363391166723,
"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.3129,
"release_spin_rate": 2298.3634,
"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.0308,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2203,
"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.1418,
"sample_weight": 1.0,
"run_prevention_factor": 0.9879,
"strikeout_factor": 1.004,
"walk_factor": 0.988,
"homer_factor": 0.9669,
"woba_minus_xwoba": 0.023,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "642547",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9879,
"adjusted": 1
},
"predicted_H": {
"original": 4.0,
"factor": 0.9879,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.988,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9669,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.004,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 5,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 25,
"Pitches": 106,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 5",
"detail": "Actual minus predicted earned runs was -5; this is the primary run-prevention error."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 5 ER."
}
],
"provenance": {
"prediction": "output/games/20260925_TB@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"
}
} |
| 20260925 | 20260925_TB@PHI | home | Cristopher Sánchez | Cristopher Sánchez | True | 6.1 | 7.0 | 2 | 3 | 2 | -1 | 7/5 | 3/1 | 6/10 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.925,
"WHIP": 1.215,
"IP": 200.0,
"games_started": null,
"games_pitched": 32,
"role_avg_IP": 6.25,
"recent_avg_IP": 6.333,
"last_start_IP": 6.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4337,
"sample_weight": 1.0,
"run_prevention_factor": 0.9631,
"strikeout_factor": 1.0623,
"walk_factor": 0.924,
"homer_factor": 1.0018,
"regression_flag": "neutral",
"k_percent": 26.6,
"bb_percent": 5.3,
"woba": 0.298,
"xwoba": 0.285,
"barrel_percent": 7.3,
"hard_hit_percent": 41.8,
"whiff_percent": 31.3
},
"espn_rank": {
"rank": null,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 32.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8649,
"prior_weight": 0.1351
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "650911",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 32,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.2,
"ER": 16.0,
"R": 16.0,
"H": 31.0,
"BB": 6.0,
"SO": 27.0,
"HR": 4.0,
"BF": 129.0,
"Pitches": 476.0
},
"per_game": {
"IP": 6.1,
"ER": 3.2,
"R": 3.2,
"H": 6.2,
"BB": 1.2,
"SO": 5.4,
"HR": 0.8,
"BF": 25.8,
"Pitches": 95.2
},
"rates": {
"ERA": 4.5474,
"WHIP": 1.1684,
"ER_per_IP": 0.50526,
"H_per_IP": 0.97895,
"BB_per_IP": 0.18947,
"SO_per_IP": 0.85263,
"HR_per_IP": 0.12632
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.1,
"ER": 23.0,
"R": 23.0,
"H": 60.0,
"BB": 16.0,
"SO": 64.0,
"HR": 6.0,
"BF": 252.0,
"Pitches": 955.0
},
"per_game": {
"IP": 6.0,
"ER": 2.3,
"R": 2.3,
"H": 6.0,
"BB": 1.6,
"SO": 6.4,
"HR": 0.6,
"BF": 25.2,
"Pitches": 95.5
},
"rates": {
"ERA": 3.375,
"WHIP": 1.2391,
"ER_per_IP": 0.375,
"H_per_IP": 0.97826,
"BB_per_IP": 0.26087,
"SO_per_IP": 1.04348,
"HR_per_IP": 0.09783
}
},
"season": {
"games": 32,
"totals": {
"IP": 200.0,
"ER": 65.0,
"R": 71.0,
"H": 199.0,
"BB": 44.0,
"SO": 221.0,
"HR": 18.0,
"BF": 830.0,
"Pitches": 3058.0
},
"per_game": {
"IP": 6.1,
"ER": 2.0312,
"R": 2.2188,
"H": 6.2188,
"BB": 1.375,
"SO": 6.9062,
"HR": 0.5625,
"BF": 25.9375,
"Pitches": 95.5625
},
"rates": {
"ERA": 2.925,
"WHIP": 1.215,
"ER_per_IP": 0.325,
"H_per_IP": 0.995,
"BB_per_IP": 0.22,
"SO_per_IP": 1.105,
"HR_per_IP": 0.09
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 2.715,
"predicted_H": 6.122,
"predicted_BB": 1.507,
"predicted_SO": 6.017,
"predicted_HR": 0.713,
"predicted_ERA": 3.921,
"predicted_WHIP": 1.224
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4071,
"form_weight": 0.5929,
"form_reliability": 0.8649,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 32.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8649,
"prior_weight": 0.1351
},
"applied_metrics": {
"predicted_IP": {
"model": 6.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.715,
"final": 3.2381,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 6.122,
"final": 6.4794,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.507,
"final": 2.1148,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 6.017,
"final": 3.9747,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.713,
"final": 0.4228,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.921,
"final": 3.921,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.224,
"final": 1.224,
"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.1,
"ER": 23,
"H": 60,
"BB": 16,
"SO": 64,
"HR": 6,
"ERA": 3.3750000000000004,
"WHIP": 1.2391304347826089,
"K9": 9.391304347826088,
"HR9": 0.8804347826086957,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-20T00:00:00"
},
"recent_form_boost": 0.8714060383314711,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_BB": 3.0,
"predicted_SO": 1.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 32.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8649,
"prior_weight": 0.1351
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.1,
"predicted_ER": 3,
"predicted_H": 7,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "650911",
"player_name": "Cristopher S\u00e1nchez",
"position": "Starter",
"team": "PHI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 6.3333,
"predicted_SO": 1.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"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": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 6.0,
"delta": 5.0,
"percent_delta": 5.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 3,
"boosted_metrics": 1,
"deboosted_metrics": 2,
"better_metrics": 2,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 1.0,
"after": 6.0,
"delta": 5.0,
"percent_delta": 5.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"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": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.1,
"after": 6.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 6.0,
"delta": 5.0,
"percent_delta": 5.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 3,
"boosted_metrics": 1,
"deboosted_metrics": 2,
"better_metrics": 2,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 1.0,
"after": 6.0,
"delta": 5.0,
"percent_delta": 5.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PHI",
"games": 159,
"wins": 87,
"losses": 72,
"win_pct": 0.5472,
"runs_scored": 705.0,
"runs_allowed": 681.0,
"run_differential": 24.0,
"run_differential_per_game": 0.1509,
"avg_runs_scored": 4.434,
"avg_runs_allowed": 4.283,
"offense_index": 0.9908,
"defense_index": 1.0448,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 4.1,
"run_differential": -2.0
},
"available": true,
"quality_score": 0.0587
},
"opponent": {
"team": "TB",
"games": 159,
"wins": 96,
"losses": 63,
"win_pct": 0.6038,
"runs_scored": 719.0,
"runs_allowed": 642.0,
"run_differential": 77.0,
"run_differential_per_game": 0.4843,
"avg_runs_scored": 4.522,
"avg_runs_allowed": 4.0377,
"offense_index": 1.0105,
"defense_index": 1.1083,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 2.9,
"run_differential": 8.0
},
"available": true,
"quality_score": 0.1828
},
"edges": {
"quality_edge": -0.1241,
"offense_edge": -0.0092,
"opponent_offense_edge": 0.0105,
"defense_strength": 0.0448,
"opponent_defense_weakness": -0.1083,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.996,
"run_prevention": 1.0034,
"strikeout": 0.9954
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "650911",
"profile": {
"available": true,
"pitcher_id": "650911",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 773.0,
"k_percent": 26.6,
"bb_percent": 5.3,
"woba": 0.298,
"xwoba": 0.285,
"sweet_spot_percent": 32.1,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 41.8,
"avg_best_speed": 78.1003,
"avg_hyper_speed": 94.4801,
"whiff_percent": 31.3,
"swing_percent": 50.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3323,
"command_and_miss": 0.8007,
"regression_edge": 0.3714,
"xwoba_edge": 0.7429,
"barrel_edge": -0.0222,
"hard_hit_edge": -0.5571,
"whiff_edge": 0.9,
"bb_edge": 0.95,
"pitch_design_score": 0.0288
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "650911",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 95,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 95,
"pitch_usage": 0.0,
"release_speed": 90.3783652742236,
"release_spin_rate": 2082.1207290628663,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 95,
"pitch_usage": 0.0,
"release_speed": 90.3783652742236,
"release_spin_rate": 2082.1207290628663,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 90.3784,
"release_spin_rate": 2082.1207,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.0288,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.2059,
"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.4337,
"sample_weight": 1.0,
"run_prevention_factor": 0.9631,
"strikeout_factor": 1.0623,
"walk_factor": 0.924,
"homer_factor": 1.0018,
"woba_minus_xwoba": 0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "650911",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9631,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.9631,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.924,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0018,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0623,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 7,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 29,
"Pitches": 114,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260925_TB@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"
}
} |
| 20260925 | 20260925_TEX@MIN | away | Jacob deGrom | Jacob deGrom | True | 5.2 | 4.0 | -5 | 3 | 8 | 5 | 5/8 | 4/3 | 8/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.857142857142857,
"WHIP": 1.096638655462185,
"IP": 158.2,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.289,
"recent_avg_IP": 5.667,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4232,
"sample_weight": 1.0,
"run_prevention_factor": 0.964,
"strikeout_factor": 1.0971,
"walk_factor": 0.952,
"homer_factor": 1.0293,
"regression_flag": "neutral",
"k_percent": 30.4,
"bb_percent": 6.7,
"woba": 0.279,
"xwoba": 0.284,
"barrel_percent": 7.9,
"hard_hit_percent": 44.9,
"whiff_percent": 33.6
},
"espn_rank": {
"rank": 64,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "594798",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.1,
"ER": 7.0,
"R": 7.0,
"H": 14.0,
"BB": 6.0,
"SO": 37.0,
"HR": 3.0,
"BF": 105.0,
"Pitches": 441.0
},
"per_game": {
"IP": 5.2,
"ER": 1.4,
"R": 1.4,
"H": 2.8,
"BB": 1.2,
"SO": 7.4,
"HR": 0.6,
"BF": 21.0,
"Pitches": 88.2
},
"rates": {
"ERA": 2.2235,
"WHIP": 0.7059,
"ER_per_IP": 0.24706,
"H_per_IP": 0.49412,
"BB_per_IP": 0.21176,
"SO_per_IP": 1.30588,
"HR_per_IP": 0.10588
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.1,
"ER": 23.0,
"R": 23.0,
"H": 37.0,
"BB": 19.0,
"SO": 64.0,
"HR": 4.0,
"BF": 199.0,
"Pitches": 854.0
},
"per_game": {
"IP": 4.2,
"ER": 2.3,
"R": 2.3,
"H": 3.7,
"BB": 1.9,
"SO": 6.4,
"HR": 0.4,
"BF": 19.9,
"Pitches": 85.4
},
"rates": {
"ERA": 4.2828,
"WHIP": 1.1586,
"ER_per_IP": 0.47586,
"H_per_IP": 0.76552,
"BB_per_IP": 0.3931,
"SO_per_IP": 1.32414,
"HR_per_IP": 0.08276
}
},
"season": {
"games": 30,
"totals": {
"IP": 158.2,
"ER": 68.0,
"R": 68.0,
"H": 131.0,
"BB": 43.0,
"SO": 196.0,
"HR": 20.0,
"BF": 645.0,
"Pitches": 2646.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2667,
"R": 2.2667,
"H": 4.3667,
"BB": 1.4333,
"SO": 6.5333,
"HR": 0.6667,
"BF": 21.5,
"Pitches": 88.2
},
"rates": {
"ERA": 3.8571,
"WHIP": 1.0966,
"ER_per_IP": 0.42857,
"H_per_IP": 0.82563,
"BB_per_IP": 0.27101,
"SO_per_IP": 1.23529,
"HR_per_IP": 0.12605
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.043,
"predicted_H": 3.729,
"predicted_BB": 1.593,
"predicted_SO": 6.618,
"predicted_HR": 0.576,
"predicted_ERA": 3.4631,
"predicted_WHIP": 1.0024
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.043,
"final": 2.4357,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 3.729,
"final": 4.2506,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.593,
"final": 2.5808,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 6.618,
"final": 7.1851,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.576,
"final": 0.75,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.4631,
"final": 3.4631,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0024,
"final": 1.0024,
"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": 23,
"H": 37,
"BB": 19,
"SO": 64,
"HR": 4,
"ERA": 4.282758620689655,
"WHIP": 1.1586206896551723,
"K9": 11.917241379310344,
"HR9": 0.7448275862068965,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-20T00:00:00"
},
"recent_form_boost": 0.9715161395308712,
"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": 4.0,
"predicted_SO": 8.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
},
{
"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": 5,
"predicted_BB": 4,
"predicted_SO": 8,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "594798",
"player_name": "Jacob deGrom",
"position": "Starter",
"team": "TEX",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.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": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TEX",
"games": 159,
"wins": 79,
"losses": 80,
"win_pct": 0.4969,
"runs_scored": 661.0,
"runs_allowed": 701.0,
"run_differential": -40.0,
"run_differential_per_game": -0.2516,
"avg_runs_scored": 4.1572,
"avg_runs_allowed": 4.4088,
"offense_index": 0.9295,
"defense_index": 1.0144,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 3.9,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.0014
},
"opponent": {
"team": "MIN",
"games": 159,
"wins": 75,
"losses": 84,
"win_pct": 0.4717,
"runs_scored": 721.0,
"runs_allowed": 785.0,
"run_differential": -64.0,
"run_differential_per_game": -0.4025,
"avg_runs_scored": 4.5346,
"avg_runs_allowed": 4.9371,
"offense_index": 1.0139,
"defense_index": 0.9059,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 4.0,
"run_differential": -2.0
},
"available": true,
"quality_score": -0.0736
},
"edges": {
"quality_edge": 0.075,
"offense_edge": -0.0705,
"opponent_offense_edge": 0.0139,
"defense_strength": 0.0144,
"opponent_defense_weakness": 0.0941,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0029,
"run_prevention": 0.997,
"strikeout": 1.0011
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "594798",
"profile": {
"available": true,
"pitcher_id": "594798",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 597.0,
"k_percent": 30.4,
"bb_percent": 6.7,
"woba": 0.279,
"xwoba": 0.284,
"sweet_spot_percent": 37.2,
"barrel_batted_rate": 7.9,
"hard_hit_percent": 44.9,
"avg_best_speed": 80.4112,
"avg_hyper_speed": 94.6142,
"whiff_percent": 33.6,
"swing_percent": 51.6
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.2491,
"command_and_miss": 1.09,
"regression_edge": -0.1429,
"xwoba_edge": 0.7714,
"barrel_edge": -0.1556,
"hard_hit_edge": -1.0,
"whiff_edge": 1.2286,
"bb_edge": 0.6,
"pitch_design_score": 0.1824
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "594798",
"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": 93.12098050726556,
"release_spin_rate": 2431.696781055929,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 93.12098050726556,
"release_spin_rate": 2431.696781055929,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 93.121,
"release_spin_rate": 2431.6968,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1824,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.3029,
"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.4232,
"sample_weight": 1.0,
"run_prevention_factor": 0.964,
"strikeout_factor": 1.0971,
"walk_factor": 0.952,
"homer_factor": 1.0293,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "594798",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.964,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.964,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.952,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0293,
"adjusted": 1
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0971,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 4,
"predicted_SO": 8,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 27,
"Pitches": 107,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 5",
"detail": "Actual minus predicted earned runs was +5; this is the primary run-prevention error."
}
],
"provenance": {
"prediction": "output/games/20260925_TEX@MIN.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260925 | 20260925_TEX@MIN | home | Joe Ryan | Joe Ryan | True | 5.0 | 6.0 | 3 | 4 | 2 | -2 | 4/4 | 3/1 | 5/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.8293269230769234,
"WHIP": 1.1754807692307694,
"IP": 138.2,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 5.333,
"recent_avg_IP": 4.867,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.152,
"sample_weight": 1.0,
"run_prevention_factor": 0.9871,
"strikeout_factor": 1.0257,
"walk_factor": 0.92,
"homer_factor": 1.0558,
"regression_flag": "neutral",
"k_percent": 25.7,
"bb_percent": 5.1,
"woba": 0.312,
"xwoba": 0.298,
"barrel_percent": 10.1,
"hard_hit_percent": 40.6,
"whiff_percent": 25.8
},
"espn_rank": {
"rank": 104,
"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": "657746",
"report_date": "20260925",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.1,
"ER": 16.0,
"R": 18.0,
"H": 32.0,
"BB": 5.0,
"SO": 20.0,
"HR": 5.0,
"BF": 116.0,
"Pitches": 441.0
},
"per_game": {
"IP": 5.0,
"ER": 3.2,
"R": 3.6,
"H": 6.4,
"BB": 1.0,
"SO": 4.0,
"HR": 1.0,
"BF": 23.2,
"Pitches": 88.2
},
"rates": {
"ERA": 5.9178,
"WHIP": 1.5205,
"ER_per_IP": 0.65753,
"H_per_IP": 1.31507,
"BB_per_IP": 0.20548,
"SO_per_IP": 0.82192,
"HR_per_IP": 0.20548
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.1,
"ER": 30.0,
"R": 38.0,
"H": 64.0,
"BB": 12.0,
"SO": 52.0,
"HR": 13.0,
"BF": 236.0,
"Pitches": 908.0
},
"per_game": {
"IP": 5.0,
"ER": 3.0,
"R": 3.8,
"H": 6.4,
"BB": 1.2,
"SO": 5.2,
"HR": 1.3,
"BF": 23.6,
"Pitches": 90.8
},
"rates": {
"ERA": 5.2597,
"WHIP": 1.4805,
"ER_per_IP": 0.58442,
"H_per_IP": 1.24675,
"BB_per_IP": 0.23377,
"SO_per_IP": 1.01299,
"HR_per_IP": 0.25325
}
},
"season": {
"games": 26,
"totals": {
"IP": 138.2,
"ER": 59.0,
"R": 72.0,
"H": 133.0,
"BB": 30.0,
"SO": 151.0,
"HR": 21.0,
"BF": 588.0,
"Pitches": 2338.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2692,
"R": 2.7692,
"H": 5.1154,
"BB": 1.1538,
"SO": 5.8077,
"HR": 0.8077,
"BF": 22.6154,
"Pitches": 89.9231
},
"rates": {
"ERA": 3.8293,
"WHIP": 1.1755,
"ER_per_IP": 0.42548,
"H_per_IP": 0.95913,
"BB_per_IP": 0.21635,
"SO_per_IP": 1.08894,
"HR_per_IP": 0.15144
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.901,
"predicted_H": 5.976,
"predicted_BB": 1.231,
"predicted_SO": 4.759,
"predicted_HR": 1.018,
"predicted_ERA": 5.1642,
"predicted_WHIP": 1.4253
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4181,
"form_weight": 0.5819,
"form_reliability": 0.8387,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.901,
"final": 3.3605,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.976,
"final": 5.1497,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.231,
"final": 1.9707,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.759,
"final": 4.8598,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.018,
"final": 1.0105,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.1642,
"final": 5.1642,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4253,
"final": 1.4253,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 51.1,
"ER": 30,
"H": 64,
"BB": 12,
"SO": 52,
"HR": 13,
"ERA": 5.25974025974026,
"WHIP": 1.4805194805194806,
"K9": 9.116883116883118,
"HR9": 2.2792207792207795,
"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-09-19T00:00:00"
},
"recent_form_boost": 1.089474043695672,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 5.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "657746",
"player_name": "Joe Ryan",
"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": 4.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 4.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": 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": 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": "MIN",
"games": 159,
"wins": 75,
"losses": 84,
"win_pct": 0.4717,
"runs_scored": 721.0,
"runs_allowed": 785.0,
"run_differential": -64.0,
"run_differential_per_game": -0.4025,
"avg_runs_scored": 4.5346,
"avg_runs_allowed": 4.9371,
"offense_index": 1.0139,
"defense_index": 0.9059,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 4.0,
"run_differential": -2.0
},
"available": true,
"quality_score": -0.0736
},
"opponent": {
"team": "TEX",
"games": 159,
"wins": 79,
"losses": 80,
"win_pct": 0.4969,
"runs_scored": 661.0,
"runs_allowed": 701.0,
"run_differential": -40.0,
"run_differential_per_game": -0.2516,
"avg_runs_scored": 4.1572,
"avg_runs_allowed": 4.4088,
"offense_index": 0.9295,
"defense_index": 1.0144,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 3.9,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.0014
},
"edges": {
"quality_edge": -0.075,
"offense_edge": 0.0139,
"opponent_offense_edge": -0.0705,
"defense_strength": -0.0941,
"opponent_defense_weakness": -0.0144,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.997,
"run_prevention": 1.0019,
"strikeout": 1.0034
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "657746",
"profile": {
"available": true,
"pitcher_id": "657746",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 542.0,
"k_percent": 25.7,
"bb_percent": 5.1,
"woba": 0.312,
"xwoba": 0.298,
"sweet_spot_percent": 35.3,
"barrel_batted_rate": 10.1,
"hard_hit_percent": 40.6,
"avg_best_speed": 78.4652,
"avg_hyper_speed": 94.3183,
"whiff_percent": 25.8,
"swing_percent": 50.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.9005,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0113,
"command_and_miss": 0.4779,
"regression_edge": 0.4,
"xwoba_edge": 0.3714,
"barrel_edge": -0.6444,
"hard_hit_edge": -0.3857,
"whiff_edge": 0.1143,
"bb_edge": 1.0,
"pitch_design_score": -0.0731
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "657746",
"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.55760817104789,
"release_spin_rate": 2384.6802222056413,
"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.55760817104789,
"release_spin_rate": 2384.6802222056413,
"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.5576,
"release_spin_rate": 2384.6802,
"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.0731,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5224,
"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.152,
"sample_weight": 1.0,
"run_prevention_factor": 0.9871,
"strikeout_factor": 1.0257,
"walk_factor": 0.92,
"homer_factor": 1.0558,
"woba_minus_xwoba": 0.014,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "657746",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9871,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.9871,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.92,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0558,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0257,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 99,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"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/20260925_TEX@MIN.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |