| 20260919 | 20260919_ATL@HOU | away | Grant Holmes | Grant Holmes | True | 5.0 | 6.0 | 3 | 2 | 2 | 0 | 4/8 | 4/0 | 1/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6334106728538287,
"WHIP": 1.3294663573085848,
"IP": 143.2,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 4.816,
"recent_avg_IP": 4.8,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.393,
"sample_weight": 1.0,
"run_prevention_factor": 1.0334,
"strikeout_factor": 0.9914,
"walk_factor": 1.014,
"homer_factor": 1.079,
"regression_flag": "neutral",
"k_percent": 18.3,
"bb_percent": 9.8,
"woba": 0.311,
"xwoba": 0.336,
"barrel_percent": 8.6,
"hard_hit_percent": 44.1,
"whiff_percent": 27.2
},
"espn_rank": {
"rank": 54,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 143.2,
"season_ERA": 3.633,
"season_WHIP": 1.329,
"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": 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": "656550",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.0,
"ER": 5.0,
"R": 5.0,
"H": 17.0,
"BB": 8.0,
"SO": 13.0,
"HR": 1.0,
"BF": 94.0,
"Pitches": 364.0
},
"per_game": {
"IP": 4.2,
"ER": 1.0,
"R": 1.0,
"H": 3.4,
"BB": 1.6,
"SO": 2.6,
"HR": 0.2,
"BF": 18.8,
"Pitches": 72.8
},
"rates": {
"ERA": 1.875,
"WHIP": 1.0417,
"ER_per_IP": 0.20833,
"H_per_IP": 0.70833,
"BB_per_IP": 0.33333,
"SO_per_IP": 0.54167,
"HR_per_IP": 0.04167
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.1,
"ER": 17.0,
"R": 17.0,
"H": 42.0,
"BB": 18.0,
"SO": 32.0,
"HR": 5.0,
"BF": 201.0,
"Pitches": 738.0
},
"per_game": {
"IP": 5.0,
"ER": 1.7,
"R": 1.7,
"H": 4.2,
"BB": 1.8,
"SO": 3.2,
"HR": 0.5,
"BF": 20.1,
"Pitches": 73.8
},
"rates": {
"ERA": 3.1014,
"WHIP": 1.2162,
"ER_per_IP": 0.34459,
"H_per_IP": 0.85135,
"BB_per_IP": 0.36486,
"SO_per_IP": 0.64865,
"HR_per_IP": 0.10135
}
},
"season": {
"games": 30,
"totals": {
"IP": 143.2,
"ER": 58.0,
"R": 60.0,
"H": 129.0,
"BB": 62.0,
"SO": 112.0,
"HR": 20.0,
"BF": 614.0,
"Pitches": 2296.0
},
"per_game": {
"IP": 4.2,
"ER": 1.9333,
"R": 2.0,
"H": 4.3,
"BB": 2.0667,
"SO": 3.7333,
"HR": 0.6667,
"BF": 20.4667,
"Pitches": 76.5333
},
"rates": {
"ERA": 3.6334,
"WHIP": 1.3295,
"ER_per_IP": 0.40371,
"H_per_IP": 0.89791,
"BB_per_IP": 0.43155,
"SO_per_IP": 0.77958,
"HR_per_IP": 0.13921
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 1.567,
"predicted_H": 3.96,
"predicted_BB": 1.761,
"predicted_SO": 3.23,
"predicted_HR": 0.441,
"predicted_ERA": 2.9301,
"predicted_WHIP": 1.1882
}
},
"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": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.567,
"final": 1.7447,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.96,
"final": 3.9764,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.761,
"final": 2.6798,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 3.23,
"final": 2.3149,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.441,
"final": 0.26,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.9301,
"final": 2.9301,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1882,
"final": 1.1882,
"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": 17,
"H": 42,
"BB": 18,
"SO": 32,
"HR": 5,
"ERA": 3.1013513513513518,
"WHIP": 1.2162162162162162,
"K9": 5.837837837837839,
"HR9": 0.9121621621621623,
"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-13T00:00:00"
},
"recent_form_boost": 0.844205103683081,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 4.0,
"predicted_SO": 1.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "656550",
"player_name": "Grant Holmes",
"position": "Starter",
"team": "ATL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 1.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 1.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ATL",
"games": 154,
"wins": 90,
"losses": 64,
"win_pct": 0.5844,
"runs_scored": 712.0,
"runs_allowed": 597.0,
"run_differential": 115.0,
"run_differential_per_game": 0.7468,
"avg_runs_scored": 4.6234,
"avg_runs_allowed": 3.8766,
"offense_index": 1.0304,
"defense_index": 1.1574,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 5.1,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.1633
},
"opponent": {
"team": "HOU",
"games": 154,
"wins": 77,
"losses": 77,
"win_pct": 0.5,
"runs_scored": 683.0,
"runs_allowed": 737.0,
"run_differential": -54.0,
"run_differential_per_game": -0.3506,
"avg_runs_scored": 4.4351,
"avg_runs_allowed": 4.7857,
"offense_index": 0.9884,
"defense_index": 0.9376,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 5.2,
"run_differential": -16.0
},
"available": true,
"quality_score": -0.078
},
"edges": {
"quality_edge": 0.2413,
"offense_edge": 0.0304,
"opponent_offense_edge": -0.0116,
"defense_strength": 0.1574,
"opponent_defense_weakness": 0.0624,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0148,
"run_prevention": 0.9703,
"strikeout": 1.0082
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "656550",
"profile": {
"available": true,
"pitcher_id": "656550",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 581.0,
"k_percent": 18.3,
"bb_percent": 9.8,
"woba": 0.311,
"xwoba": 0.336,
"sweet_spot_percent": 34.5,
"barrel_batted_rate": 8.6,
"hard_hit_percent": 44.1,
"avg_best_speed": 81.9272,
"avg_hyper_speed": 94.7091,
"whiff_percent": 27.2,
"swing_percent": 48.5
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.495,
"command_and_miss": -0.1629,
"regression_edge": -0.7143,
"xwoba_edge": -0.7,
"barrel_edge": -0.2889,
"hard_hit_edge": -0.8714,
"whiff_edge": 0.3143,
"bb_edge": -0.175,
"pitch_design_score": -0.0253
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "656550",
"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": 89.3989336845068,
"release_spin_rate": 2453.170183545841,
"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": 89.3989336845068,
"release_spin_rate": 2453.170183545841,
"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.3989,
"release_spin_rate": 2453.1702,
"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.0253,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.181,
"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.393,
"sample_weight": 1.0,
"run_prevention_factor": 1.0334,
"strikeout_factor": 0.9914,
"walk_factor": 1.014,
"homer_factor": 1.079,
"woba_minus_xwoba": -0.025,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "656550",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 1.0334,
"adjusted": 1
},
"predicted_H": {
"original": 4.0,
"factor": 1.0334,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.014,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.079,
"adjusted": 0
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9914,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 4,
"predicted_SO": 1,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 92,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was +4."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -4."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260919_ATL@HOU.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_ATL@HOU | home | Hayden Wesneski | Hayden Wesneski | True | 5.1 | 5.1 | 0 | 2 | 1 | -1 | 2/4 | 1/3 | 5/3 | Last 10 before this game (9 available){
"model_context": {
"embedded_season": {
"ERA": 3.6986301369863015,
"WHIP": 1.13013698630137,
"IP": 48.2,
"games_started": null,
"games_pitched": 9,
"role_avg_IP": 5.407,
"recent_avg_IP": 5.2,
"last_start_IP": 3.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0755,
"sample_weight": 0.712,
"run_prevention_factor": 0.9936,
"strikeout_factor": 0.9825,
"walk_factor": 0.9858,
"homer_factor": 0.9839,
"regression_flag": "neutral",
"k_percent": 19.2,
"bb_percent": 8.1,
"woba": 0.288,
"xwoba": 0.297,
"barrel_percent": 5.6,
"hard_hit_percent": 41.5,
"whiff_percent": 23.5
},
"espn_rank": {
"rank": 255,
"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.6164383561643836,
"last_10": 0.3835616438356164
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 9.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6429,
"prior_weight": 0.3571
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669713",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 9,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 7.0,
"R": 11.0,
"H": 16.0,
"BB": 9.0,
"SO": 20.0,
"HR": 2.0,
"BF": 103.0,
"Pitches": 416.0
},
"per_game": {
"IP": 5.1,
"ER": 1.4,
"R": 2.2,
"H": 3.2,
"BB": 1.8,
"SO": 4.0,
"HR": 0.4,
"BF": 20.6,
"Pitches": 83.2
},
"rates": {
"ERA": 2.4231,
"WHIP": 0.9615,
"ER_per_IP": 0.26923,
"H_per_IP": 0.61538,
"BB_per_IP": 0.34615,
"SO_per_IP": 0.76923,
"HR_per_IP": 0.07692
}
},
"last_10": {
"games": 9,
"totals": {
"IP": 48.2,
"ER": 20.0,
"R": 24.0,
"H": 39.0,
"BB": 16.0,
"SO": 38.0,
"HR": 4.0,
"BF": 198.0,
"Pitches": 737.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2222,
"R": 2.6667,
"H": 4.3333,
"BB": 1.7778,
"SO": 4.2222,
"HR": 0.4444,
"BF": 22.0,
"Pitches": 81.8889
},
"rates": {
"ERA": 3.6986,
"WHIP": 1.1301,
"ER_per_IP": 0.41096,
"H_per_IP": 0.80137,
"BB_per_IP": 0.32877,
"SO_per_IP": 0.78082,
"HR_per_IP": 0.08219
}
},
"season": {
"games": 9,
"totals": {
"IP": 48.2,
"ER": 20.0,
"R": 24.0,
"H": 39.0,
"BB": 16.0,
"SO": 38.0,
"HR": 4.0,
"BF": 198.0,
"Pitches": 737.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2222,
"R": 2.6667,
"H": 4.3333,
"BB": 1.7778,
"SO": 4.2222,
"HR": 0.4444,
"BF": 22.0,
"Pitches": 81.8889
},
"rates": {
"ERA": 3.6986,
"WHIP": 1.1301,
"ER_per_IP": 0.41096,
"H_per_IP": 0.80137,
"BB_per_IP": 0.32877,
"SO_per_IP": 0.78082,
"HR_per_IP": 0.08219
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.078,
"predicted_H": 4.22,
"predicted_BB": 1.88,
"predicted_SO": 4.436,
"predicted_HR": 0.553,
"predicted_ERA": 3.5059,
"predicted_WHIP": 1.1437
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5009,
"form_weight": 0.4991,
"form_reliability": 0.6429,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 9.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6429,
"prior_weight": 0.3571
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.078,
"final": 2.0389,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.22,
"final": 3.1081,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.88,
"final": 1.4392,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.436,
"final": 4.7185,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.553,
"final": 0.276,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.5059,
"final": 3.5059,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1437,
"final": 1.1437,
"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": 20,
"H": 39,
"BB": 16,
"SO": 38,
"HR": 4,
"ERA": 3.6986301369863015,
"WHIP": 1.13013698630137,
"K9": 7.027397260273973,
"HR9": 0.7397260273972603,
"games_pitched": 9,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 9,
"error_prone": false
},
"games_count": 9,
"latest_game_date": "2026-09-13T00:00:00"
},
"recent_form_boost": 0.9092469863191418,
"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": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 9.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6429,
"prior_weight": 0.3571
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669713",
"player_name": "Hayden Wesneski",
"position": "Starter",
"team": "HOU",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": "HOU",
"games": 154,
"wins": 77,
"losses": 77,
"win_pct": 0.5,
"runs_scored": 683.0,
"runs_allowed": 737.0,
"run_differential": -54.0,
"run_differential_per_game": -0.3506,
"avg_runs_scored": 4.4351,
"avg_runs_allowed": 4.7857,
"offense_index": 0.9884,
"defense_index": 0.9376,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 5.2,
"run_differential": -16.0
},
"available": true,
"quality_score": -0.078
},
"opponent": {
"team": "ATL",
"games": 154,
"wins": 90,
"losses": 64,
"win_pct": 0.5844,
"runs_scored": 712.0,
"runs_allowed": 597.0,
"run_differential": 115.0,
"run_differential_per_game": 0.7468,
"avg_runs_scored": 4.6234,
"avg_runs_allowed": 3.8766,
"offense_index": 1.0304,
"defense_index": 1.1574,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 5.1,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.1633
},
"edges": {
"quality_edge": -0.2413,
"offense_edge": -0.0116,
"opponent_offense_edge": 0.0304,
"defense_strength": -0.0624,
"opponent_defense_weakness": -0.1574,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9873,
"run_prevention": 1.0232,
"strikeout": 0.9903
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669713",
"profile": {
"available": true,
"pitcher_id": "669713",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 178.0,
"k_percent": 19.2,
"bb_percent": 8.1,
"woba": 0.288,
"xwoba": 0.297,
"sweet_spot_percent": 33.1,
"barrel_batted_rate": 5.6,
"hard_hit_percent": 41.5,
"avg_best_speed": 76.2435,
"avg_hyper_speed": 94.1341,
"whiff_percent": 23.5,
"swing_percent": 49.1
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3449,
"command_and_miss": -0.205,
"regression_edge": -0.2571,
"xwoba_edge": 0.4143,
"barrel_edge": 0.3778,
"hard_hit_edge": -0.5,
"whiff_edge": -0.2143,
"bb_edge": 0.25,
"pitch_design_score": -0.1015
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669713",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 87,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 88.03852243062536,
"release_spin_rate": 2314.189096702115,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 88.03852243062536,
"release_spin_rate": 2314.189096702115,
"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.0385,
"release_spin_rate": 2314.1891,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1015,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.7252,
"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.0755,
"sample_weight": 0.712,
"run_prevention_factor": 0.9936,
"strikeout_factor": 0.9825,
"walk_factor": 0.9858,
"homer_factor": 0.9839,
"woba_minus_xwoba": -0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669713",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9954,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9954,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9899,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9885,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9875,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 19,
"Pitches": 85,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 9 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/20260919_ATL@HOU.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_BOS@TB | away | Brayan Bello | Brayan Bello | True | 4.1 | 8.0 | 11 | 2 | 1 | -1 | 3/5 | 0/0 | 6/11 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.744408945686901,
"WHIP": 1.428115015974441,
"IP": 104.1,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 4.519,
"recent_avg_IP": 4.4,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.4134,
"sample_weight": 1.0,
"run_prevention_factor": 1.0351,
"strikeout_factor": 0.9686,
"walk_factor": 0.97,
"homer_factor": 1.0553,
"regression_flag": "neutral",
"k_percent": 17.2,
"bb_percent": 7.6,
"woba": 0.328,
"xwoba": 0.349,
"barrel_percent": 7.7,
"hard_hit_percent": 40.8,
"whiff_percent": 24.3
},
"espn_rank": {
"rank": 718,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "678394",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 4.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 16.0,
"ER": 9.0,
"R": 9.0,
"H": 18.0,
"BB": 7.0,
"SO": 12.0,
"HR": 0.0,
"BF": 74.0,
"Pitches": 327.0
},
"per_game": {
"IP": 3.1,
"ER": 1.8,
"R": 1.8,
"H": 3.6,
"BB": 1.4,
"SO": 2.4,
"HR": 0.0,
"BF": 14.8,
"Pitches": 65.4
},
"rates": {
"ERA": 5.0625,
"WHIP": 1.5625,
"ER_per_IP": 0.5625,
"H_per_IP": 1.125,
"BB_per_IP": 0.4375,
"SO_per_IP": 0.75,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 33.2,
"ER": 11.0,
"R": 12.0,
"H": 30.0,
"BB": 10.0,
"SO": 25.0,
"HR": 0.0,
"BF": 142.0,
"Pitches": 568.0
},
"per_game": {
"IP": 3.1,
"ER": 1.1,
"R": 1.2,
"H": 3.0,
"BB": 1.0,
"SO": 2.5,
"HR": 0.0,
"BF": 14.2,
"Pitches": 56.8
},
"rates": {
"ERA": 2.9406,
"WHIP": 1.1881,
"ER_per_IP": 0.32673,
"H_per_IP": 0.89109,
"BB_per_IP": 0.29703,
"SO_per_IP": 0.74257,
"HR_per_IP": 0.0
}
},
"season": {
"games": 24,
"totals": {
"IP": 104.1,
"ER": 55.0,
"R": 60.0,
"H": 114.0,
"BB": 35.0,
"SO": 79.0,
"HR": 11.0,
"BF": 459.0,
"Pitches": 1755.0
},
"per_game": {
"IP": 4.1,
"ER": 2.2917,
"R": 2.5,
"H": 4.75,
"BB": 1.4583,
"SO": 3.2917,
"HR": 0.4583,
"BF": 19.125,
"Pitches": 73.125
},
"rates": {
"ERA": 4.7444,
"WHIP": 1.4281,
"ER_per_IP": 0.52716,
"H_per_IP": 1.09265,
"BB_per_IP": 0.33546,
"SO_per_IP": 0.75719,
"HR_per_IP": 0.10543
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.2,
"predicted_ER": 1.759,
"predicted_H": 3.77,
"predicted_BB": 1.356,
"predicted_SO": 2.868,
"predicted_HR": 0.158,
"predicted_ERA": 4.3111,
"predicted_WHIP": 1.3961
}
},
"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": 4.1,
"form": 3.2,
"final": 4.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.759,
"final": 1.8609,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 3.77,
"final": 3.4444,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.356,
"final": 0.7826,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 2.868,
"final": 4.1923,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.158,
"final": 0.0912,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.3111,
"final": 4.3111,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3961,
"final": 1.3961,
"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": 33.2,
"ER": 11,
"H": 30,
"BB": 10,
"SO": 25,
"HR": 0,
"ERA": 2.94059405940594,
"WHIP": 1.1881188118811878,
"K9": 6.683168316831682,
"HR9": 0.0,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.8254174732308466,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 3.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "678394",
"player_name": "Brayan Bello",
"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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.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": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.1,
"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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"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.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"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.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BOS",
"games": 154,
"wins": 84,
"losses": 70,
"win_pct": 0.5455,
"runs_scored": 676.0,
"runs_allowed": 591.0,
"run_differential": 85.0,
"run_differential_per_game": 0.5519,
"avg_runs_scored": 4.3896,
"avg_runs_allowed": 3.8377,
"offense_index": 0.9745,
"defense_index": 1.1738,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 3.5,
"run_differential": -1.0
},
"available": true,
"quality_score": 0.1061
},
"opponent": {
"team": "TB",
"games": 153,
"wins": 93,
"losses": 60,
"win_pct": 0.6078,
"runs_scored": 700.0,
"runs_allowed": 622.0,
"run_differential": 78.0,
"run_differential_per_game": 0.5098,
"avg_runs_scored": 4.5752,
"avg_runs_allowed": 4.0654,
"offense_index": 1.0157,
"defense_index": 1.108,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 2.2,
"run_differential": 31.0
},
"available": true,
"quality_score": 0.2589
},
"edges": {
"quality_edge": -0.1528,
"offense_edge": -0.0255,
"opponent_offense_edge": 0.0157,
"defense_strength": 0.1738,
"opponent_defense_weakness": -0.108,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9985,
"run_prevention": 0.9928,
"strikeout": 0.9942
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "678394",
"profile": {
"available": true,
"pitcher_id": "678394",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 451.0,
"k_percent": 17.2,
"bb_percent": 7.6,
"woba": 0.328,
"xwoba": 0.349,
"sweet_spot_percent": 33.1,
"barrel_batted_rate": 7.7,
"hard_hit_percent": 40.8,
"avg_best_speed": 77.6626,
"avg_hyper_speed": 94.738,
"whiff_percent": 24.3,
"swing_percent": 49.2
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.5174,
"command_and_miss": -0.2686,
"regression_edge": -0.6,
"xwoba_edge": -1.0714,
"barrel_edge": -0.0889,
"hard_hit_edge": -0.4,
"whiff_edge": -0.1,
"bb_edge": 0.375,
"pitch_design_score": 0.0779
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "678394",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 76,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 76,
"pitch_usage": 0.0,
"release_speed": 91.24242479072493,
"release_spin_rate": 2057.3119619631498,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 76,
"pitch_usage": 0.0,
"release_speed": 91.24242479072493,
"release_spin_rate": 2057.3119619631498,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 91.2424,
"release_spin_rate": 2057.312,
"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.0779,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.5564,
"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.4134,
"sample_weight": 1.0,
"run_prevention_factor": 1.0351,
"strikeout_factor": 0.9686,
"walk_factor": 0.97,
"homer_factor": 1.0553,
"woba_minus_xwoba": -0.021,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "678394",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 5.0,
"factor": 1.0351,
"adjusted": 5
},
"predicted_H": {
"original": 7.0,
"factor": 1.0351,
"adjusted": 7
},
"predicted_BB": {
"original": 2.0,
"factor": 0.97,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0553,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9686,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 16,
"Pitches": 73,
"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 +11 outs from the projected workload."
},
{
"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/20260919_BOS@TB.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_BOS@TB | home | Freddy Peralta | Freddy Peralta | True | 5.2 | 5.2 | 0 | 3 | 1 | -2 | 5/4 | 1/2 | 4/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.670886075949367,
"WHIP": 1.3354430379746836,
"IP": 158.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.267,
"recent_avg_IP": 6.0,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1274,
"sample_weight": 1.0,
"run_prevention_factor": 0.9892,
"strikeout_factor": 1.0023,
"walk_factor": 0.988,
"homer_factor": 0.9731,
"regression_flag": "neutral",
"k_percent": 21.3,
"bb_percent": 8.5,
"woba": 0.326,
"xwoba": 0.303,
"barrel_percent": 6.1,
"hard_hit_percent": 38.3,
"whiff_percent": 26.1
},
"espn_rank": {
"rank": 359,
"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": "642547",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 7.0,
"R": 7.0,
"H": 17.0,
"BB": 5.0,
"SO": 23.0,
"HR": 3.0,
"BF": 112.0,
"Pitches": 431.0
},
"per_game": {
"IP": 6.0,
"ER": 1.4,
"R": 1.4,
"H": 3.4,
"BB": 1.0,
"SO": 4.6,
"HR": 0.6,
"BF": 22.4,
"Pitches": 86.2
},
"rates": {
"ERA": 2.1,
"WHIP": 0.7333,
"ER_per_IP": 0.23333,
"H_per_IP": 0.56667,
"BB_per_IP": 0.16667,
"SO_per_IP": 0.76667,
"HR_per_IP": 0.1
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.2,
"ER": 28.0,
"R": 29.0,
"H": 47.0,
"BB": 14.0,
"SO": 42.0,
"HR": 8.0,
"BF": 219.0,
"Pitches": 876.0
},
"per_game": {
"IP": 5.1,
"ER": 2.8,
"R": 2.9,
"H": 4.7,
"BB": 1.4,
"SO": 4.2,
"HR": 0.8,
"BF": 21.9,
"Pitches": 87.6
},
"rates": {
"ERA": 4.6957,
"WHIP": 1.1366,
"ER_per_IP": 0.52174,
"H_per_IP": 0.87578,
"BB_per_IP": 0.26087,
"SO_per_IP": 0.78261,
"HR_per_IP": 0.14907
}
},
"season": {
"games": 30,
"totals": {
"IP": 158.0,
"ER": 82.0,
"R": 90.0,
"H": 153.0,
"BB": 58.0,
"SO": 146.0,
"HR": 23.0,
"BF": 685.0,
"Pitches": 2769.0
},
"per_game": {
"IP": 5.1,
"ER": 2.7333,
"R": 3.0,
"H": 5.1,
"BB": 1.9333,
"SO": 4.8667,
"HR": 0.7667,
"BF": 22.8333,
"Pitches": 92.3
},
"rates": {
"ERA": 4.6709,
"WHIP": 1.3354,
"ER_per_IP": 0.51899,
"H_per_IP": 0.96835,
"BB_per_IP": 0.36709,
"SO_per_IP": 0.92405,
"HR_per_IP": 0.14557
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.301,
"predicted_H": 4.439,
"predicted_BB": 1.461,
"predicted_SO": 4.638,
"predicted_HR": 0.73,
"predicted_ERA": 3.673,
"predicted_WHIP": 1.0464
}
},
"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.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.301,
"final": 2.5879,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.439,
"final": 4.6692,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.461,
"final": 1.2718,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.638,
"final": 4.3762,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.73,
"final": 0.4304,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.673,
"final": 3.673,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0464,
"final": 1.0464,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 53.2,
"ER": 28,
"H": 47,
"BB": 14,
"SO": 42,
"HR": 8,
"ERA": 4.695652173913043,
"WHIP": 1.136645962732919,
"K9": 7.0434782608695645,
"HR9": 1.341614906832298,
"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-13T00:00:00"
},
"recent_form_boost": 1.0215746898841889,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 1.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.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": "TB",
"games": 153,
"wins": 93,
"losses": 60,
"win_pct": 0.6078,
"runs_scored": 700.0,
"runs_allowed": 622.0,
"run_differential": 78.0,
"run_differential_per_game": 0.5098,
"avg_runs_scored": 4.5752,
"avg_runs_allowed": 4.0654,
"offense_index": 1.0157,
"defense_index": 1.108,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 2.2,
"run_differential": 31.0
},
"available": true,
"quality_score": 0.2589
},
"opponent": {
"team": "BOS",
"games": 154,
"wins": 84,
"losses": 70,
"win_pct": 0.5455,
"runs_scored": 676.0,
"runs_allowed": 591.0,
"run_differential": 85.0,
"run_differential_per_game": 0.5519,
"avg_runs_scored": 4.3896,
"avg_runs_allowed": 3.8377,
"offense_index": 0.9745,
"defense_index": 1.1738,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 3.5,
"run_differential": -1.0
},
"available": true,
"quality_score": 0.1061
},
"edges": {
"quality_edge": 0.1528,
"offense_edge": 0.0157,
"opponent_offense_edge": -0.0255,
"defense_strength": 0.108,
"opponent_defense_weakness": -0.1738,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0104,
"run_prevention": 0.9775,
"strikeout": 1.0066
},
"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": 665.0,
"k_percent": 21.3,
"bb_percent": 8.5,
"woba": 0.326,
"xwoba": 0.303,
"sweet_spot_percent": 35.1,
"barrel_batted_rate": 6.1,
"hard_hit_percent": 38.3,
"avg_best_speed": 76.3348,
"avg_hyper_speed": 93.563,
"whiff_percent": 26.1,
"swing_percent": 47.6
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0962,
"command_and_miss": 0.04,
"regression_edge": 0.6571,
"xwoba_edge": 0.2429,
"barrel_edge": 0.2667,
"hard_hit_edge": -0.0429,
"whiff_edge": 0.1571,
"bb_edge": 0.15,
"pitch_design_score": -0.0326
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "642547",
"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": 89.26979962892744,
"release_spin_rate": 2296.450901848495,
"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": 89.26979962892744,
"release_spin_rate": 2296.450901848495,
"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.2698,
"release_spin_rate": 2296.4509,
"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.0326,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2327,
"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.1274,
"sample_weight": 1.0,
"run_prevention_factor": 0.9892,
"strikeout_factor": 1.0023,
"walk_factor": 0.988,
"homer_factor": 0.9731,
"woba_minus_xwoba": 0.023,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "642547",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9892,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9892,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.988,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9731,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0023,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 102,
"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/20260919_BOS@TB.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_CHC@CIN | away | Matthew Boyd | Matthew Boyd | True | 6.0 | 5.0 | -3 | 4 | 1 | -3 | 2/2 | 3/2 | 3/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.159883720930233,
"WHIP": 1.2383720930232558,
"IP": 114.2,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 5.733,
"recent_avg_IP": 5.933,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2611,
"sample_weight": 1.0,
"run_prevention_factor": 1.0222,
"strikeout_factor": 0.9663,
"walk_factor": 0.966,
"homer_factor": 1.0358,
"regression_flag": "neutral",
"k_percent": 18.8,
"bb_percent": 7.4,
"woba": 0.313,
"xwoba": 0.331,
"barrel_percent": 8.5,
"hard_hit_percent": 37.6,
"whiff_percent": 22.3
},
"espn_rank": {
"rank": 225,
"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": "571510",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.2,
"ER": 15.0,
"R": 16.0,
"H": 28.0,
"BB": 9.0,
"SO": 21.0,
"HR": 2.0,
"BF": 120.0,
"Pitches": 465.0
},
"per_game": {
"IP": 6.0,
"ER": 3.0,
"R": 3.2,
"H": 5.6,
"BB": 1.8,
"SO": 4.2,
"HR": 0.4,
"BF": 24.0,
"Pitches": 93.0
},
"rates": {
"ERA": 4.5506,
"WHIP": 1.2472,
"ER_per_IP": 0.50562,
"H_per_IP": 0.94382,
"BB_per_IP": 0.30337,
"SO_per_IP": 0.70787,
"HR_per_IP": 0.06742
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 62.2,
"ER": 29.0,
"R": 31.0,
"H": 58.0,
"BB": 21.0,
"SO": 38.0,
"HR": 9.0,
"BF": 257.0,
"Pitches": 938.0
},
"per_game": {
"IP": 6.1,
"ER": 2.9,
"R": 3.1,
"H": 5.8,
"BB": 2.1,
"SO": 3.8,
"HR": 0.9,
"BF": 25.7,
"Pitches": 93.8
},
"rates": {
"ERA": 4.1649,
"WHIP": 1.2606,
"ER_per_IP": 0.46277,
"H_per_IP": 0.92553,
"BB_per_IP": 0.33511,
"SO_per_IP": 0.60638,
"HR_per_IP": 0.14362
}
},
"season": {
"games": 20,
"totals": {
"IP": 114.2,
"ER": 53.0,
"R": 56.0,
"H": 107.0,
"BB": 35.0,
"SO": 89.0,
"HR": 15.0,
"BF": 474.0,
"Pitches": 1796.0
},
"per_game": {
"IP": 5.2,
"ER": 2.65,
"R": 2.8,
"H": 5.35,
"BB": 1.75,
"SO": 4.45,
"HR": 0.75,
"BF": 23.7,
"Pitches": 89.8
},
"rates": {
"ERA": 4.1599,
"WHIP": 1.2384,
"ER_per_IP": 0.46221,
"H_per_IP": 0.93314,
"BB_per_IP": 0.30523,
"SO_per_IP": 0.77616,
"HR_per_IP": 0.13081
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.943,
"predicted_H": 5.703,
"predicted_BB": 1.975,
"predicted_SO": 4.446,
"predicted_HR": 0.695,
"predicted_ERA": 4.3849,
"predicted_WHIP": 1.2712
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4345,
"form_weight": 0.5655,
"form_reliability": 0.8,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.943,
"final": 3.4023,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 5.703,
"final": 4.094,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.975,
"final": 2.4204,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.446,
"final": 3.8177,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.695,
"final": 0.8275,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.3849,
"final": 4.3849,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2712,
"final": 1.2712,
"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.2,
"ER": 29,
"H": 58,
"BB": 21,
"SO": 38,
"HR": 9,
"ERA": 4.164893617021277,
"WHIP": 1.2606382978723405,
"K9": 5.457446808510639,
"HR9": 1.2925531914893618,
"games_pitched": 10,
"quality_starts": 5,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-13T00:00:00"
},
"recent_form_boost": 0.9649641606123508,
"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": 2.0,
"predicted_BB": 3.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "571510",
"player_name": "Matthew Boyd",
"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": 4.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 4.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 4.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 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,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CHC",
"games": 154,
"wins": 85,
"losses": 69,
"win_pct": 0.5519,
"runs_scored": 821.0,
"runs_allowed": 680.0,
"run_differential": 141.0,
"run_differential_per_game": 0.9156,
"avg_runs_scored": 5.3312,
"avg_runs_allowed": 4.4156,
"offense_index": 1.1881,
"defense_index": 1.0162,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 4.4,
"run_differential": 9.0
},
"available": true,
"quality_score": 0.1213
},
"opponent": {
"team": "CIN",
"games": 154,
"wins": 72,
"losses": 82,
"win_pct": 0.4675,
"runs_scored": 639.0,
"runs_allowed": 791.0,
"run_differential": -152.0,
"run_differential_per_game": -0.987,
"avg_runs_scored": 4.1494,
"avg_runs_allowed": 5.1364,
"offense_index": 0.9248,
"defense_index": 0.8736,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 7.5,
"run_differential": -44.0
},
"available": true,
"quality_score": -0.2186
},
"edges": {
"quality_edge": 0.3399,
"offense_edge": 0.1881,
"opponent_offense_edge": -0.0752,
"defense_strength": 0.0162,
"opponent_defense_weakness": 0.1264,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0171,
"run_prevention": 0.9694,
"strikeout": 1.0162
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "571510",
"profile": {
"available": true,
"pitcher_id": "571510",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 449.0,
"k_percent": 18.8,
"bb_percent": 7.4,
"woba": 0.313,
"xwoba": 0.331,
"sweet_spot_percent": 33.2,
"barrel_batted_rate": 8.5,
"hard_hit_percent": 37.6,
"avg_best_speed": 76.624,
"avg_hyper_speed": 93.9892,
"whiff_percent": 22.3,
"swing_percent": 48.7
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2171,
"command_and_miss": -0.2557,
"regression_edge": -0.5143,
"xwoba_edge": -0.5571,
"barrel_edge": -0.2667,
"hard_hit_edge": 0.0571,
"whiff_edge": -0.3857,
"bb_edge": 0.425,
"pitch_design_score": -0.2703
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "571510",
"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": 85.02421296885403,
"release_spin_rate": 2216.2978149055507,
"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": 85.02421296885403,
"release_spin_rate": 2216.2978149055507,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 85.0242,
"release_spin_rate": 2216.2978,
"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.2703,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.9309,
"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.2611,
"sample_weight": 1.0,
"run_prevention_factor": 1.0222,
"strikeout_factor": 0.9663,
"walk_factor": 0.966,
"homer_factor": 1.0358,
"woba_minus_xwoba": -0.018,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "571510",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0222,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0222,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.966,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0358,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9663,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 2,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 99,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
}
],
"provenance": {
"prediction": "output/games/20260919_CHC@CIN.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_CHC@CIN | home | Nick Lodolo | Nick Lodolo | True | 4.2 | 7.0 | 7 | 4 | 3 | -1 | 8/6 | 3/2 | 7/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.120689655172414,
"WHIP": 1.489655172413793,
"IP": 96.2,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 5.088,
"recent_avg_IP": 5.0,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.804,
"sample_weight": 1.0,
"run_prevention_factor": 1.0683,
"strikeout_factor": 0.9611,
"walk_factor": 1.012,
"homer_factor": 1.1207,
"regression_flag": "neutral",
"k_percent": 18.2,
"bb_percent": 9.7,
"woba": 0.375,
"xwoba": 0.377,
"barrel_percent": 10.0,
"hard_hit_percent": 40.9,
"whiff_percent": 22.0
},
"espn_rank": {
"rank": 197,
"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": "666157",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 19.0,
"R": 19.0,
"H": 29.0,
"BB": 13.0,
"SO": 22.0,
"HR": 7.0,
"BF": 117.0,
"Pitches": 487.0
},
"per_game": {
"IP": 5.0,
"ER": 3.8,
"R": 3.8,
"H": 5.8,
"BB": 2.6,
"SO": 4.4,
"HR": 1.4,
"BF": 23.4,
"Pitches": 97.4
},
"rates": {
"ERA": 6.84,
"WHIP": 1.68,
"ER_per_IP": 0.76,
"H_per_IP": 1.16,
"BB_per_IP": 0.52,
"SO_per_IP": 0.88,
"HR_per_IP": 0.28
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.0,
"ER": 26.0,
"R": 26.0,
"H": 49.0,
"BB": 24.0,
"SO": 41.0,
"HR": 11.0,
"BF": 222.0,
"Pitches": 901.0
},
"per_game": {
"IP": 5.0,
"ER": 2.6,
"R": 2.6,
"H": 4.9,
"BB": 2.4,
"SO": 4.1,
"HR": 1.1,
"BF": 22.2,
"Pitches": 90.1
},
"rates": {
"ERA": 4.68,
"WHIP": 1.46,
"ER_per_IP": 0.52,
"H_per_IP": 0.98,
"BB_per_IP": 0.48,
"SO_per_IP": 0.82,
"HR_per_IP": 0.22
}
},
"season": {
"games": 19,
"totals": {
"IP": 96.2,
"ER": 55.0,
"R": 55.0,
"H": 102.0,
"BB": 42.0,
"SO": 79.0,
"HR": 19.0,
"BF": 433.0,
"Pitches": 1717.0
},
"per_game": {
"IP": 5.0,
"ER": 2.8947,
"R": 2.8947,
"H": 5.3684,
"BB": 2.2105,
"SO": 4.1579,
"HR": 1.0,
"BF": 22.7895,
"Pitches": 90.3684
},
"rates": {
"ERA": 5.1207,
"WHIP": 1.4897,
"ER_per_IP": 0.56897,
"H_per_IP": 1.05517,
"BB_per_IP": 0.43448,
"SO_per_IP": 0.81724,
"HR_per_IP": 0.19655
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 3.054,
"predicted_H": 5.28,
"predicted_BB": 2.327,
"predicted_SO": 4.326,
"predicted_HR": 1.114,
"predicted_ERA": 5.4974,
"predicted_WHIP": 1.5213
}
},
"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.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 3.054,
"final": 3.9064,
"source": "model_form_blend"
},
"predicted_H": {
"model": 8.0,
"form": 5.28,
"final": 6.4714,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.327,
"final": 2.6218,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.326,
"final": 5.4972,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 3.0,
"form": 1.114,
"final": 1.9401,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.4974,
"final": 5.4974,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5213,
"final": 1.5213,
"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.0,
"ER": 26,
"H": 49,
"BB": 24,
"SO": 41,
"HR": 11,
"ERA": 4.68,
"WHIP": 1.46,
"K9": 7.38,
"HR9": 1.98,
"games_pitched": 10,
"quality_starts": 2,
"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-14T00:00:00"
},
"recent_form_boost": 1.0278976712506485,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 5.0,
"predicted_H": 8.0,
"predicted_BB": 3.0,
"predicted_SO": 7.0,
"predicted_HR": 3.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 5,
"predicted_H": 8,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 3
}
}
],
"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": 3.0,
"predicted_ER": 5.0,
"predicted_H": 8.0,
"predicted_HR": 3.0,
"predicted_IP": 5.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 5.0,
"predicted_H": 8.0,
"predicted_HR": 3.0,
"predicted_IP": 4.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": 5.0,
"after": 5.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 5.0,
"predicted_H": 8.0,
"predicted_HR": 3.0,
"predicted_IP": 4.2,
"predicted_R": 5.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": 5.0,
"after": 5.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CIN",
"games": 154,
"wins": 72,
"losses": 82,
"win_pct": 0.4675,
"runs_scored": 639.0,
"runs_allowed": 791.0,
"run_differential": -152.0,
"run_differential_per_game": -0.987,
"avg_runs_scored": 4.1494,
"avg_runs_allowed": 5.1364,
"offense_index": 0.9248,
"defense_index": 0.8736,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 7.5,
"run_differential": -44.0
},
"available": true,
"quality_score": -0.2186
},
"opponent": {
"team": "CHC",
"games": 154,
"wins": 85,
"losses": 69,
"win_pct": 0.5519,
"runs_scored": 821.0,
"runs_allowed": 680.0,
"run_differential": 141.0,
"run_differential_per_game": 0.9156,
"avg_runs_scored": 5.3312,
"avg_runs_allowed": 4.4156,
"offense_index": 1.1881,
"defense_index": 1.0162,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 4.4,
"run_differential": 9.0
},
"available": true,
"quality_score": 0.1213
},
"edges": {
"quality_edge": -0.3399,
"offense_edge": -0.0752,
"opponent_offense_edge": 0.1881,
"defense_strength": -0.1264,
"opponent_defense_weakness": -0.0162,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9751,
"run_prevention": 1.0597,
"strikeout": 0.9748
},
"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": 397.0,
"k_percent": 18.2,
"bb_percent": 9.7,
"woba": 0.375,
"xwoba": 0.377,
"sweet_spot_percent": 37.2,
"barrel_batted_rate": 10.0,
"hard_hit_percent": 40.9,
"avg_best_speed": 79.52,
"avg_hyper_speed": 94.6958,
"whiff_percent": 22.0,
"swing_percent": 45.4
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -1.2273,
"command_and_miss": -0.4243,
"regression_edge": -0.0571,
"xwoba_edge": -1.8714,
"barrel_edge": -0.6,
"hard_hit_edge": -0.4143,
"whiff_edge": -0.4286,
"bb_edge": -0.15,
"pitch_design_score": -0.0087
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "666157",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 91,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 91,
"pitch_usage": 0.0,
"release_speed": 89.6962749852693,
"release_spin_rate": 2272.5171822682164,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 91,
"pitch_usage": 0.0,
"release_speed": 89.6962749852693,
"release_spin_rate": 2272.5171822682164,
"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.6963,
"release_spin_rate": 2272.5172,
"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.0087,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0621,
"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.804,
"sample_weight": 1.0,
"run_prevention_factor": 1.0683,
"strikeout_factor": 0.9611,
"walk_factor": 1.012,
"homer_factor": 1.1207,
"woba_minus_xwoba": -0.002,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "666157",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0683,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0683,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.012,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1207,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9611,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 8,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 3,
"box_score_synced": true,
"BF": 25,
"Pitches": 107,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -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": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260919_CHC@CIN.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_DET@CHW | away | Jackson Jobe | Jackson Jobe | True | 5.0 | 6.0 | 3 | 1 | 3 | 2 | 3/4 | 2/1 | 6/9 | Last 10 before this game (7 available){
"model_context": {
"embedded_season": {
"ERA": 3.8942307692307696,
"WHIP": 1.2692307692307694,
"IP": 34.2,
"games_started": null,
"games_pitched": 7,
"role_avg_IP": 4.952,
"recent_avg_IP": 5.2,
"last_start_IP": 6.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.041,
"sample_weight": 0.496,
"run_prevention_factor": 1.0035,
"strikeout_factor": 0.9946,
"walk_factor": 0.997,
"homer_factor": 1.0156,
"regression_flag": "neutral",
"k_percent": 23.0,
"bb_percent": 8.8,
"woba": 0.337,
"xwoba": 0.324,
"barrel_percent": 9.4,
"hard_hit_percent": 35.1,
"whiff_percent": 22.1
},
"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.7627118644067797,
"last_10": 0.23728813559322032
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "695549",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 7,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 9.0,
"R": 10.0,
"H": 21.0,
"BB": 11.0,
"SO": 26.0,
"HR": 4.0,
"BF": 109.0,
"Pitches": 444.0
},
"per_game": {
"IP": 5.1,
"ER": 1.8,
"R": 2.0,
"H": 4.2,
"BB": 2.2,
"SO": 5.2,
"HR": 0.8,
"BF": 21.8,
"Pitches": 88.8
},
"rates": {
"ERA": 3.1154,
"WHIP": 1.2308,
"ER_per_IP": 0.34615,
"H_per_IP": 0.80769,
"BB_per_IP": 0.42308,
"SO_per_IP": 1.0,
"HR_per_IP": 0.15385
}
},
"last_10": {
"games": 7,
"totals": {
"IP": 34.2,
"ER": 15.0,
"R": 16.0,
"H": 31.0,
"BB": 13.0,
"SO": 34.0,
"HR": 6.0,
"BF": 148.0,
"Pitches": 589.0
},
"per_game": {
"IP": 5.0,
"ER": 2.1429,
"R": 2.2857,
"H": 4.4286,
"BB": 1.8571,
"SO": 4.8571,
"HR": 0.8571,
"BF": 21.1429,
"Pitches": 84.1429
},
"rates": {
"ERA": 3.8942,
"WHIP": 1.2692,
"ER_per_IP": 0.43269,
"H_per_IP": 0.89423,
"BB_per_IP": 0.375,
"SO_per_IP": 0.98077,
"HR_per_IP": 0.17308
}
},
"season": {
"games": 7,
"totals": {
"IP": 34.2,
"ER": 15.0,
"R": 16.0,
"H": 31.0,
"BB": 13.0,
"SO": 34.0,
"HR": 6.0,
"BF": 148.0,
"Pitches": 589.0
},
"per_game": {
"IP": 5.0,
"ER": 2.1429,
"R": 2.2857,
"H": 4.4286,
"BB": 1.8571,
"SO": 4.8571,
"HR": 0.8571,
"BF": 21.1429,
"Pitches": 84.1429
},
"rates": {
"ERA": 3.8942,
"WHIP": 1.2692,
"ER_per_IP": 0.43269,
"H_per_IP": 0.89423,
"BB_per_IP": 0.375,
"SO_per_IP": 0.98077,
"HR_per_IP": 0.17308
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.192,
"predicted_H": 4.589,
"predicted_BB": 2.043,
"predicted_SO": 4.998,
"predicted_HR": 0.794,
"predicted_ERA": 3.8312,
"predicted_WHIP": 1.288
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5261,
"form_weight": 0.4739,
"form_reliability": 0.5833,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.192,
"final": 1.5649,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.589,
"final": 3.7531,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.043,
"final": 2.0204,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.998,
"final": 5.5251,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.794,
"final": 0.3763,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.8312,
"final": 3.8312,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.288,
"final": 1.288,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 34.2,
"ER": 15,
"H": 31,
"BB": 13,
"SO": 34,
"HR": 6,
"ERA": 3.8942307692307696,
"WHIP": 1.2692307692307694,
"K9": 8.826923076923077,
"HR9": 1.5576923076923077,
"games_pitched": 7,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 7,
"error_prone": false
},
"games_count": 7,
"latest_game_date": "2026-09-13T00:00:00"
},
"recent_form_boost": 0.9347294020198794,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_BB": 2.0,
"predicted_SO": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
}
}
],
"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": 2.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.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": 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": 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": 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": 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": "DET",
"games": 154,
"wins": 73,
"losses": 81,
"win_pct": 0.474,
"runs_scored": 695.0,
"runs_allowed": 618.0,
"run_differential": 77.0,
"run_differential_per_game": 0.5,
"avg_runs_scored": 4.513,
"avg_runs_allowed": 4.013,
"offense_index": 1.0015,
"defense_index": 1.123,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.3,
"avg_runs_allowed": 3.7,
"run_differential": 26.0
},
"available": true,
"quality_score": 0.1089
},
"opponent": {
"team": "CHW",
"games": 154,
"wins": 78,
"losses": 76,
"win_pct": 0.5065,
"runs_scored": 722.0,
"runs_allowed": 689.0,
"run_differential": 33.0,
"run_differential_per_game": 0.2143,
"avg_runs_scored": 4.6883,
"avg_runs_allowed": 4.474,
"offense_index": 1.0404,
"defense_index": 1.0072,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 4.9,
"run_differential": -10.0
},
"available": true,
"quality_score": -0.0383
},
"edges": {
"quality_edge": 0.1472,
"offense_edge": 0.0015,
"opponent_offense_edge": 0.0404,
"defense_strength": 0.123,
"opponent_defense_weakness": -0.0072,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.008,
"run_prevention": 0.9868,
"strikeout": 1.0012
},
"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": 124.0,
"k_percent": 23.0,
"bb_percent": 8.8,
"woba": 0.337,
"xwoba": 0.324,
"sweet_spot_percent": 27.8,
"barrel_batted_rate": 9.4,
"hard_hit_percent": 35.1,
"avg_best_speed": 77.4518,
"avg_hyper_speed": 93.6297,
"whiff_percent": 22.1,
"swing_percent": 47.7
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2063,
"command_and_miss": -0.0657,
"regression_edge": 0.3714,
"xwoba_edge": -0.3571,
"barrel_edge": -0.4667,
"hard_hit_edge": 0.4143,
"whiff_edge": -0.4143,
"bb_edge": 0.075,
"pitch_design_score": 0.1602
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "695549",
"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": 92.71263412879364,
"release_spin_rate": 2452.621362567848,
"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": 92.71263412879364,
"release_spin_rate": 2452.621362567848,
"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.7126,
"release_spin_rate": 2452.6214,
"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.1602,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1445,
"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.041,
"sample_weight": 0.496,
"run_prevention_factor": 1.0035,
"strikeout_factor": 0.9946,
"walk_factor": 0.997,
"homer_factor": 1.0156,
"woba_minus_xwoba": 0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "695549",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0017,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0017,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9985,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0077,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9973,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 3,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 92,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 7 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "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/20260919_DET@CHW.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_DET@CHW | home | Sean Burke | Sean Burke | True | 5.0 | 6.0 | 3 | 1 | 1 | 0 | 2/5 | 4/3 | 5/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.4658385093167703,
"WHIP": 1.1987577639751552,
"IP": 161.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.24,
"recent_avg_IP": 4.067,
"last_start_IP": 1.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1123,
"sample_weight": 1.0,
"run_prevention_factor": 0.9905,
"strikeout_factor": 1.0251,
"walk_factor": 0.992,
"homer_factor": 1.0119,
"regression_flag": "neutral",
"k_percent": 25.9,
"bb_percent": 8.7,
"woba": 0.303,
"xwoba": 0.302,
"barrel_percent": 8.2,
"hard_hit_percent": 38.7,
"whiff_percent": 25.5
},
"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": 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": "680732",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 21.0,
"ER": 13.0,
"R": 14.0,
"H": 22.0,
"BB": 16.0,
"SO": 19.0,
"HR": 2.0,
"BF": 98.0,
"Pitches": 436.0
},
"per_game": {
"IP": 4.1,
"ER": 2.6,
"R": 2.8,
"H": 4.4,
"BB": 3.2,
"SO": 3.8,
"HR": 0.4,
"BF": 19.6,
"Pitches": 87.2
},
"rates": {
"ERA": 5.5714,
"WHIP": 1.8095,
"ER_per_IP": 0.61905,
"H_per_IP": 1.04762,
"BB_per_IP": 0.7619,
"SO_per_IP": 0.90476,
"HR_per_IP": 0.09524
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.2,
"ER": 22.0,
"R": 24.0,
"H": 42.0,
"BB": 24.0,
"SO": 53.0,
"HR": 5.0,
"BF": 211.0,
"Pitches": 886.0
},
"per_game": {
"IP": 5.0,
"ER": 2.2,
"R": 2.4,
"H": 4.2,
"BB": 2.4,
"SO": 5.3,
"HR": 0.5,
"BF": 21.1,
"Pitches": 88.6
},
"rates": {
"ERA": 4.0685,
"WHIP": 1.3562,
"ER_per_IP": 0.45205,
"H_per_IP": 0.86301,
"BB_per_IP": 0.49315,
"SO_per_IP": 1.08904,
"HR_per_IP": 0.10274
}
},
"season": {
"games": 30,
"totals": {
"IP": 161.0,
"ER": 62.0,
"R": 65.0,
"H": 135.0,
"BB": 58.0,
"SO": 173.0,
"HR": 18.0,
"BF": 669.0,
"Pitches": 2692.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0667,
"R": 2.1667,
"H": 4.5,
"BB": 1.9333,
"SO": 5.7667,
"HR": 0.6,
"BF": 22.3,
"Pitches": 89.7333
},
"rates": {
"ERA": 3.4658,
"WHIP": 1.1988,
"ER_per_IP": 0.38509,
"H_per_IP": 0.83851,
"BB_per_IP": 0.36025,
"SO_per_IP": 1.07453,
"HR_per_IP": 0.1118
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.462,
"predicted_H": 4.544,
"predicted_BB": 2.675,
"predicted_SO": 4.77,
"predicted_HR": 0.518,
"predicted_ERA": 4.6172,
"predicted_WHIP": 1.5039
}
},
"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": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.462,
"final": 1.862,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.544,
"final": 3.5,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 2.675,
"final": 3.2187,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.77,
"final": 4.8644,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.518,
"final": 0.7158,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.6172,
"final": 4.6172,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5039,
"final": 1.5039,
"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": 22,
"H": 42,
"BB": 24,
"SO": 53,
"HR": 5,
"ERA": 4.068493150684931,
"WHIP": 1.356164383561644,
"K9": 9.801369863013699,
"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-14T00:00:00"
},
"recent_form_boost": 0.9565072602917444,
"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": 2.0,
"predicted_BB": 4.0,
"predicted_SO": 5.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": "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": 4.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 1.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 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": "CHW",
"games": 154,
"wins": 78,
"losses": 76,
"win_pct": 0.5065,
"runs_scored": 722.0,
"runs_allowed": 689.0,
"run_differential": 33.0,
"run_differential_per_game": 0.2143,
"avg_runs_scored": 4.6883,
"avg_runs_allowed": 4.474,
"offense_index": 1.0404,
"defense_index": 1.0072,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 4.9,
"run_differential": -10.0
},
"available": true,
"quality_score": -0.0383
},
"opponent": {
"team": "DET",
"games": 154,
"wins": 73,
"losses": 81,
"win_pct": 0.474,
"runs_scored": 695.0,
"runs_allowed": 618.0,
"run_differential": 77.0,
"run_differential_per_game": 0.5,
"avg_runs_scored": 4.513,
"avg_runs_allowed": 4.013,
"offense_index": 1.0015,
"defense_index": 1.123,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.3,
"avg_runs_allowed": 3.7,
"run_differential": 26.0
},
"available": true,
"quality_score": 0.1089
},
"edges": {
"quality_edge": -0.1472,
"offense_edge": 0.0404,
"opponent_offense_edge": 0.0015,
"defense_strength": 0.0072,
"opponent_defense_weakness": -0.123,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9943,
"run_prevention": 1.0069,
"strikeout": 0.9955
},
"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": 624.0,
"k_percent": 25.9,
"bb_percent": 8.7,
"woba": 0.303,
"xwoba": 0.302,
"sweet_spot_percent": 35.2,
"barrel_batted_rate": 8.2,
"hard_hit_percent": 38.7,
"avg_best_speed": 79.4734,
"avg_hyper_speed": 94.0033,
"whiff_percent": 25.5,
"swing_percent": 48.8
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.06,
"command_and_miss": 0.2957,
"regression_edge": 0.0286,
"xwoba_edge": 0.2714,
"barrel_edge": -0.2,
"hard_hit_edge": -0.1,
"whiff_edge": 0.0714,
"bb_edge": 0.1,
"pitch_design_score": -0.0132
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "680732",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 82,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 82,
"pitch_usage": 0.0,
"release_speed": 89.61500452964786,
"release_spin_rate": 2513.1964166090206,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 82,
"pitch_usage": 0.0,
"release_speed": 89.61500452964786,
"release_spin_rate": 2513.1964166090206,
"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.615,
"release_spin_rate": 2513.1964,
"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.0132,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0946,
"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.1123,
"sample_weight": 1.0,
"run_prevention_factor": 0.9905,
"strikeout_factor": 1.0251,
"walk_factor": 0.992,
"homer_factor": 1.0119,
"woba_minus_xwoba": 0.001,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "680732",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9905,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9905,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 0.992,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0119,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0251,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 2,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 4,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 97,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"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/20260919_DET@CHW.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_KC@PIT | away | Noah Cameron | Noah Cameron | True | 5.2 | 6.0 | 1 | 1 | 4 | 3 | 2/7 | 2/2 | 7/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.841683366733467,
"WHIP": 1.190380761523046,
"IP": 166.1,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.69,
"recent_avg_IP": 5.6,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0468,
"sample_weight": 1.0,
"run_prevention_factor": 0.996,
"strikeout_factor": 1.0057,
"walk_factor": 0.968,
"homer_factor": 0.9989,
"regression_flag": "neutral",
"k_percent": 21.5,
"bb_percent": 7.5,
"woba": 0.296,
"xwoba": 0.306,
"barrel_percent": 7.6,
"hard_hit_percent": 37.7,
"whiff_percent": 26.5
},
"espn_rank": {
"rank": 71,
"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": "702070",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.0,
"ER": 7.0,
"R": 7.0,
"H": 20.0,
"BB": 9.0,
"SO": 23.0,
"HR": 3.0,
"BF": 112.0,
"Pitches": 436.0
},
"per_game": {
"IP": 5.2,
"ER": 1.4,
"R": 1.4,
"H": 4.0,
"BB": 1.8,
"SO": 4.6,
"HR": 0.6,
"BF": 22.4,
"Pitches": 87.2
},
"rates": {
"ERA": 2.25,
"WHIP": 1.0357,
"ER_per_IP": 0.25,
"H_per_IP": 0.71429,
"BB_per_IP": 0.32143,
"SO_per_IP": 0.82143,
"HR_per_IP": 0.10714
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 65.2,
"ER": 12.0,
"R": 12.0,
"H": 33.0,
"BB": 18.0,
"SO": 57.0,
"HR": 3.0,
"BF": 243.0,
"Pitches": 952.0
},
"per_game": {
"IP": 6.2,
"ER": 1.2,
"R": 1.2,
"H": 3.3,
"BB": 1.8,
"SO": 5.7,
"HR": 0.3,
"BF": 24.3,
"Pitches": 95.2
},
"rates": {
"ERA": 1.6447,
"WHIP": 0.7766,
"ER_per_IP": 0.18274,
"H_per_IP": 0.50254,
"BB_per_IP": 0.27411,
"SO_per_IP": 0.86802,
"HR_per_IP": 0.04569
}
},
"season": {
"games": 29,
"totals": {
"IP": 166.1,
"ER": 71.0,
"R": 76.0,
"H": 146.0,
"BB": 52.0,
"SO": 149.0,
"HR": 17.0,
"BF": 692.0,
"Pitches": 2698.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4483,
"R": 2.6207,
"H": 5.0345,
"BB": 1.7931,
"SO": 5.1379,
"HR": 0.5862,
"BF": 23.8621,
"Pitches": 93.0345
},
"rates": {
"ERA": 3.8417,
"WHIP": 1.1904,
"ER_per_IP": 0.42685,
"H_per_IP": 0.87776,
"BB_per_IP": 0.31263,
"SO_per_IP": 0.89579,
"HR_per_IP": 0.1022
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.778,
"predicted_H": 4.283,
"predicted_BB": 1.872,
"predicted_SO": 5.159,
"predicted_HR": 0.561,
"predicted_ERA": 2.6828,
"predicted_WHIP": 1.0318
}
},
"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.2,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.778,
"final": 1.4573,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.283,
"final": 3.3421,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.872,
"final": 1.9248,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 5.159,
"final": 5.9178,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.561,
"final": 0.7419,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.6828,
"final": 2.6828,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0318,
"final": 1.0318,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 65.2,
"ER": 12,
"H": 33,
"BB": 18,
"SO": 57,
"HR": 3,
"ERA": 1.6446700507614211,
"WHIP": 0.7766497461928934,
"K9": 7.812182741116751,
"HR9": 0.4111675126903553,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": true,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-13T00:00:00"
},
"recent_form_boost": 0.6863604898924974,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_BB": 2.0,
"predicted_SO": 7.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": "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": 2.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": "KC",
"games": 154,
"wins": 67,
"losses": 87,
"win_pct": 0.4351,
"runs_scored": 648.0,
"runs_allowed": 748.0,
"run_differential": -100.0,
"run_differential_per_game": -0.6494,
"avg_runs_scored": 4.2078,
"avg_runs_allowed": 4.8571,
"offense_index": 0.9378,
"defense_index": 0.9238,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 4.3,
"run_differential": -12.0
},
"available": true,
"quality_score": -0.2048
},
"opponent": {
"team": "PIT",
"games": 154,
"wins": 77,
"losses": 77,
"win_pct": 0.5,
"runs_scored": 738.0,
"runs_allowed": 711.0,
"run_differential": 27.0,
"run_differential_per_game": 0.1753,
"avg_runs_scored": 4.7922,
"avg_runs_allowed": 4.6169,
"offense_index": 1.068,
"defense_index": 0.9719,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.3,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0565
},
"edges": {
"quality_edge": -0.2613,
"offense_edge": -0.0622,
"opponent_offense_edge": 0.068,
"defense_strength": -0.0762,
"opponent_defense_weakness": 0.0281,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9845,
"run_prevention": 1.0316,
"strikeout": 0.9867
},
"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": 664.0,
"k_percent": 21.5,
"bb_percent": 7.5,
"woba": 0.296,
"xwoba": 0.306,
"sweet_spot_percent": 37.2,
"barrel_batted_rate": 7.6,
"hard_hit_percent": 37.7,
"avg_best_speed": 77.6699,
"avg_hyper_speed": 93.9511,
"whiff_percent": 26.5,
"swing_percent": 48.2
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1021,
"command_and_miss": 0.1229,
"regression_edge": -0.2857,
"xwoba_edge": 0.1571,
"barrel_edge": -0.0667,
"hard_hit_edge": 0.0429,
"whiff_edge": 0.2143,
"bb_edge": 0.4,
"pitch_design_score": -0.1721
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "702070",
"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": 86.77886182913517,
"release_spin_rate": 2192.4719216717085,
"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": 86.77886182913517,
"release_spin_rate": 2192.4719216717085,
"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.7789,
"release_spin_rate": 2192.4719,
"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.1721,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.2291,
"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.0468,
"sample_weight": 1.0,
"run_prevention_factor": 0.996,
"strikeout_factor": 1.0057,
"walk_factor": 0.968,
"homer_factor": 0.9989,
"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": 0.996,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.996,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.968,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9989,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0057,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 2,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 97,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was +3."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 5",
"detail": "Actual minus predicted hits was +5."
}
],
"provenance": {
"prediction": "output/games/20260919_KC@PIT.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_KC@PIT | home | Bubba Chandler | Bubba Chandler | True | 5.1 | 4.0 | -4 | 4 | 3 | -1 | 7/8 | 1/1 | 6/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.276018099547511,
"WHIP": 1.350678733031674,
"IP": 147.1,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.071,
"recent_avg_IP": 5.2,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0819,
"sample_weight": 1.0,
"run_prevention_factor": 1.007,
"strikeout_factor": 0.9771,
"walk_factor": 1.054,
"homer_factor": 0.9913,
"regression_flag": "neutral",
"k_percent": 20.8,
"bb_percent": 11.8,
"woba": 0.308,
"xwoba": 0.316,
"barrel_percent": 6.4,
"hard_hit_percent": 38.6,
"whiff_percent": 22.2
},
"espn_rank": {
"rank": 103,
"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": "696149",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 13.0,
"R": 14.0,
"H": 22.0,
"BB": 11.0,
"SO": 24.0,
"HR": 4.0,
"BF": 108.0,
"Pitches": 444.0
},
"per_game": {
"IP": 5.1,
"ER": 2.6,
"R": 2.8,
"H": 4.4,
"BB": 2.2,
"SO": 4.8,
"HR": 0.8,
"BF": 21.6,
"Pitches": 88.8
},
"rates": {
"ERA": 4.5,
"WHIP": 1.2692,
"ER_per_IP": 0.5,
"H_per_IP": 0.84615,
"BB_per_IP": 0.42308,
"SO_per_IP": 0.92308,
"HR_per_IP": 0.15385
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.0,
"ER": 20.0,
"R": 24.0,
"H": 42.0,
"BB": 20.0,
"SO": 47.0,
"HR": 4.0,
"BF": 215.0,
"Pitches": 887.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0,
"R": 2.4,
"H": 4.2,
"BB": 2.0,
"SO": 4.7,
"HR": 0.4,
"BF": 21.5,
"Pitches": 88.7
},
"rates": {
"ERA": 3.3962,
"WHIP": 1.1698,
"ER_per_IP": 0.37736,
"H_per_IP": 0.79245,
"BB_per_IP": 0.37736,
"SO_per_IP": 0.88679,
"HR_per_IP": 0.07547
}
},
"season": {
"games": 29,
"totals": {
"IP": 147.1,
"ER": 70.0,
"R": 80.0,
"H": 124.0,
"BB": 75.0,
"SO": 132.0,
"HR": 14.0,
"BF": 636.0,
"Pitches": 2519.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4138,
"R": 2.7586,
"H": 4.2759,
"BB": 2.5862,
"SO": 4.5517,
"HR": 0.4828,
"BF": 21.931,
"Pitches": 86.8621
},
"rates": {
"ERA": 4.276,
"WHIP": 1.3507,
"ER_per_IP": 0.47511,
"H_per_IP": 0.84163,
"BB_per_IP": 0.50905,
"SO_per_IP": 0.89593,
"HR_per_IP": 0.09502
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.407,
"predicted_H": 4.438,
"predicted_BB": 2.181,
"predicted_SO": 4.755,
"predicted_HR": 0.625,
"predicted_ERA": 4.1433,
"predicted_WHIP": 1.2661
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4121,
"form_weight": 0.5879,
"form_reliability": 0.8529,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.1,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.407,
"final": 3.0636,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 4.438,
"final": 5.4939,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.181,
"final": 1.6943,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.755,
"final": 5.2681,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.625,
"final": 0.3674,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1433,
"final": 4.1433,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2661,
"final": 1.2661,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 53.0,
"ER": 20,
"H": 42,
"BB": 20,
"SO": 47,
"HR": 4,
"ERA": 3.3962264150943393,
"WHIP": 1.1698113207547167,
"K9": 7.981132075471697,
"HR9": 0.6792452830188679,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-13T00:00:00"
},
"recent_form_boost": 0.8762184259676298,
"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": 7.0,
"predicted_BB": 1.0,
"predicted_SO": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
}
],
"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": 4.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.1,
"predicted_R": 4.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.1,
"delta": 0.1,
"percent_delta": 0.02,
"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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.1,
"delta": 0.1,
"percent_delta": 0.02,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PIT",
"games": 154,
"wins": 77,
"losses": 77,
"win_pct": 0.5,
"runs_scored": 738.0,
"runs_allowed": 711.0,
"run_differential": 27.0,
"run_differential_per_game": 0.1753,
"avg_runs_scored": 4.7922,
"avg_runs_allowed": 4.6169,
"offense_index": 1.068,
"defense_index": 0.9719,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.3,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0565
},
"opponent": {
"team": "KC",
"games": 154,
"wins": 67,
"losses": 87,
"win_pct": 0.4351,
"runs_scored": 648.0,
"runs_allowed": 748.0,
"run_differential": -100.0,
"run_differential_per_game": -0.6494,
"avg_runs_scored": 4.2078,
"avg_runs_allowed": 4.8571,
"offense_index": 0.9378,
"defense_index": 0.9238,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 4.3,
"run_differential": -12.0
},
"available": true,
"quality_score": -0.2048
},
"edges": {
"quality_edge": 0.2613,
"offense_edge": 0.068,
"opponent_offense_edge": -0.0622,
"defense_strength": -0.0281,
"opponent_defense_weakness": 0.0762,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0121,
"run_prevention": 0.9798,
"strikeout": 1.0128
},
"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": 611.0,
"k_percent": 20.8,
"bb_percent": 11.8,
"woba": 0.308,
"xwoba": 0.316,
"sweet_spot_percent": 30.8,
"barrel_batted_rate": 6.4,
"hard_hit_percent": 38.6,
"avg_best_speed": 78.4871,
"avg_hyper_speed": 93.9628,
"whiff_percent": 22.2,
"swing_percent": 46.9
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0181,
"command_and_miss": -0.3521,
"regression_edge": -0.2286,
"xwoba_edge": -0.1286,
"barrel_edge": 0.2,
"hard_hit_edge": -0.0857,
"whiff_edge": -0.4,
"bb_edge": -0.675,
"pitch_design_score": 0.28
},
"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.87397962331742,
"release_spin_rate": 2334.780316578319,
"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.87397962331742,
"release_spin_rate": 2334.780316578319,
"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.874,
"release_spin_rate": 2334.7803,
"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.0819,
"sample_weight": 1.0,
"run_prevention_factor": 1.007,
"strikeout_factor": 0.9771,
"walk_factor": 1.054,
"homer_factor": 0.9913,
"woba_minus_xwoba": -0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "696149",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.007,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.007,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.054,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9913,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9771,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 7,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 92,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260919_KC@PIT.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_MIA@SD | away | Eury Pérez | Eury Pérez | True | 5.0 | 4.2 | -1 | 5 | 5 | 0 | 7/8 | 3/3 | 5/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.990762124711316,
"WHIP": 1.2401847575057736,
"IP": 144.1,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.346,
"recent_avg_IP": 4.333,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0604,
"sample_weight": 1.0,
"run_prevention_factor": 0.9949,
"strikeout_factor": 1.0429,
"walk_factor": 1.03,
"homer_factor": 1.0594,
"regression_flag": "neutral",
"k_percent": 25.7,
"bb_percent": 10.6,
"woba": 0.309,
"xwoba": 0.312,
"barrel_percent": 10.2,
"hard_hit_percent": 39.3,
"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": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "691587",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 21.2,
"ER": 20.0,
"R": 23.0,
"H": 28.0,
"BB": 15.0,
"SO": 22.0,
"HR": 5.0,
"BF": 108.0,
"Pitches": 464.0
},
"per_game": {
"IP": 4.1,
"ER": 4.0,
"R": 4.6,
"H": 5.6,
"BB": 3.0,
"SO": 4.4,
"HR": 1.0,
"BF": 21.6,
"Pitches": 92.8
},
"rates": {
"ERA": 8.3077,
"WHIP": 1.9846,
"ER_per_IP": 0.92308,
"H_per_IP": 1.29231,
"BB_per_IP": 0.69231,
"SO_per_IP": 1.01538,
"HR_per_IP": 0.23077
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.2,
"ER": 28.0,
"R": 32.0,
"H": 50.0,
"BB": 27.0,
"SO": 51.0,
"HR": 5.0,
"BF": 231.0,
"Pitches": 956.0
},
"per_game": {
"IP": 5.1,
"ER": 2.8,
"R": 3.2,
"H": 5.0,
"BB": 2.7,
"SO": 5.1,
"HR": 0.5,
"BF": 23.1,
"Pitches": 95.6
},
"rates": {
"ERA": 4.7848,
"WHIP": 1.462,
"ER_per_IP": 0.53165,
"H_per_IP": 0.94937,
"BB_per_IP": 0.51266,
"SO_per_IP": 0.96835,
"HR_per_IP": 0.09494
}
},
"season": {
"games": 27,
"totals": {
"IP": 144.1,
"ER": 64.0,
"R": 72.0,
"H": 115.0,
"BB": 64.0,
"SO": 155.0,
"HR": 18.0,
"BF": 602.0,
"Pitches": 2457.0
},
"per_game": {
"IP": 5.1,
"ER": 2.3704,
"R": 2.6667,
"H": 4.2593,
"BB": 2.3704,
"SO": 5.7407,
"HR": 0.6667,
"BF": 22.2963,
"Pitches": 91.0
},
"rates": {
"ERA": 3.9908,
"WHIP": 1.2402,
"ER_per_IP": 0.44342,
"H_per_IP": 0.79677,
"BB_per_IP": 0.44342,
"SO_per_IP": 1.0739,
"HR_per_IP": 0.12471
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 3.244,
"predicted_H": 5.189,
"predicted_BB": 2.685,
"predicted_SO": 4.897,
"predicted_HR": 0.784,
"predicted_ERA": 5.9557,
"predicted_WHIP": 1.6064
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.416,
"form_weight": 0.584,
"form_reliability": 0.8438,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 3.244,
"final": 3.9745,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 5.189,
"final": 5.9424,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.685,
"final": 2.816,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.897,
"final": 4.5239,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.784,
"final": 0.4579,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.9557,
"final": 5.9557,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.6064,
"final": 1.6064,
"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": 28,
"H": 50,
"BB": 27,
"SO": 51,
"HR": 5,
"ERA": 4.784810126582278,
"WHIP": 1.462025316455696,
"K9": 8.715189873417721,
"HR9": 0.8544303797468353,
"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-13T00:00:00"
},
"recent_form_boost": 1.0397394434025473,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 5.0,
"predicted_H": 7.0,
"predicted_BB": 3.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
}
}
],
"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": 3.0,
"predicted_ER": 5.0,
"predicted_H": 7.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": 3.0,
"predicted_ER": 5.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 5.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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIA",
"games": 154,
"wins": 76,
"losses": 78,
"win_pct": 0.4935,
"runs_scored": 683.0,
"runs_allowed": 681.0,
"run_differential": 2.0,
"run_differential_per_game": 0.013,
"avg_runs_scored": 4.4351,
"avg_runs_allowed": 4.4221,
"offense_index": 0.987,
"defense_index": 1.0161,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 6.5,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.0389
},
"opponent": {
"team": "SD",
"games": 154,
"wins": 85,
"losses": 69,
"win_pct": 0.5519,
"runs_scored": 676.0,
"runs_allowed": 640.0,
"run_differential": 36.0,
"run_differential_per_game": 0.2338,
"avg_runs_scored": 4.3896,
"avg_runs_allowed": 4.1558,
"offense_index": 0.9769,
"defense_index": 1.0812,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 9,
"losses": 1,
"win_pct": 0.9,
"avg_runs_scored": 7.1,
"avg_runs_allowed": 4.4,
"run_differential": 27.0
},
"available": true,
"quality_score": 0.2127
},
"edges": {
"quality_edge": -0.2516,
"offense_edge": -0.013,
"opponent_offense_edge": -0.0231,
"defense_strength": 0.0161,
"opponent_defense_weakness": -0.0812,
"recent_win_pct_edge": -0.5
},
"player_factors": {
"ip": 0.9913,
"run_prevention": 1.0073,
"strikeout": 0.9943
},
"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": 581.0,
"k_percent": 25.7,
"bb_percent": 10.6,
"woba": 0.309,
"xwoba": 0.312,
"sweet_spot_percent": 32.9,
"barrel_batted_rate": 10.2,
"hard_hit_percent": 39.3,
"avg_best_speed": 76.8908,
"avg_hyper_speed": 94.2578,
"whiff_percent": 28.8,
"swing_percent": 50.9
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0645,
"command_and_miss": 0.3529,
"regression_edge": -0.0857,
"xwoba_edge": -0.0143,
"barrel_edge": -0.6444,
"hard_hit_edge": -0.1857,
"whiff_edge": 0.5429,
"bb_edge": -0.375,
"pitch_design_score": 0.1674
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "691587",
"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.84068630513147,
"release_spin_rate": 2524.944052474774,
"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.84068630513147,
"release_spin_rate": 2524.944052474774,
"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.8407,
"release_spin_rate": 2524.9441,
"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.1674,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1957,
"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.0604,
"sample_weight": 1.0,
"run_prevention_factor": 0.9949,
"strikeout_factor": 1.0429,
"walk_factor": 1.03,
"homer_factor": 1.0594,
"woba_minus_xwoba": -0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "691587",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 0.9949,
"adjusted": 4
},
"predicted_H": {
"original": 5.0,
"factor": 0.9949,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 1.03,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0594,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0429,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 7,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"Pitches": 107,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260919_MIA@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"
}
} |
| 20260919 | 20260919_MIA@SD | home | Casey Mize | Casey Mize | True | 5.0 | 3.0 | -6 | 3 | 5 | 2 | 5/5 | 2/5 | 2/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6916890080428955,
"WHIP": 1.1420911528150135,
"IP": 124.1,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 5.181,
"recent_avg_IP": 4.467,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1144,
"sample_weight": 1.0,
"run_prevention_factor": 0.9903,
"strikeout_factor": 0.9863,
"walk_factor": 0.94,
"homer_factor": 1.0097,
"regression_flag": "neutral",
"k_percent": 21.0,
"bb_percent": 6.1,
"woba": 0.299,
"xwoba": 0.294,
"barrel_percent": 8.4,
"hard_hit_percent": 38.9,
"whiff_percent": 23.6
},
"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": 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": "663554",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.1,
"ER": 15.0,
"R": 20.0,
"H": 27.0,
"BB": 6.0,
"SO": 12.0,
"HR": 7.0,
"BF": 102.0,
"Pitches": 374.0
},
"per_game": {
"IP": 4.1,
"ER": 3.0,
"R": 4.0,
"H": 5.4,
"BB": 1.2,
"SO": 2.4,
"HR": 1.4,
"BF": 20.4,
"Pitches": 74.8
},
"rates": {
"ERA": 6.0448,
"WHIP": 1.4776,
"ER_per_IP": 0.67164,
"H_per_IP": 1.20896,
"BB_per_IP": 0.26866,
"SO_per_IP": 0.53731,
"HR_per_IP": 0.31343
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.0,
"ER": 27.0,
"R": 32.0,
"H": 52.0,
"BB": 13.0,
"SO": 30.0,
"HR": 9.0,
"BF": 206.0,
"Pitches": 779.0
},
"per_game": {
"IP": 4.2,
"ER": 2.7,
"R": 3.2,
"H": 5.2,
"BB": 1.3,
"SO": 3.0,
"HR": 0.9,
"BF": 20.6,
"Pitches": 77.9
},
"rates": {
"ERA": 5.1702,
"WHIP": 1.383,
"ER_per_IP": 0.57447,
"H_per_IP": 1.10638,
"BB_per_IP": 0.2766,
"SO_per_IP": 0.6383,
"HR_per_IP": 0.19149
}
},
"season": {
"games": 24,
"totals": {
"IP": 124.1,
"ER": 51.0,
"R": 57.0,
"H": 111.0,
"BB": 31.0,
"SO": 107.0,
"HR": 14.0,
"BF": 510.0,
"Pitches": 1938.0
},
"per_game": {
"IP": 5.1,
"ER": 2.125,
"R": 2.375,
"H": 4.625,
"BB": 1.2917,
"SO": 4.4583,
"HR": 0.5833,
"BF": 21.25,
"Pitches": 80.75
},
"rates": {
"ERA": 3.6917,
"WHIP": 1.1421,
"ER_per_IP": 0.41019,
"H_per_IP": 0.89276,
"BB_per_IP": 0.24933,
"SO_per_IP": 0.86059,
"HR_per_IP": 0.1126
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.695,
"predicted_H": 5.122,
"predicted_BB": 1.348,
"predicted_SO": 3.245,
"predicted_HR": 1.019,
"predicted_ERA": 5.1485,
"predicted_WHIP": 1.3736
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4228,
"form_weight": 0.5772,
"form_reliability": 0.8276,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.695,
"final": 2.824,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.122,
"final": 5.0704,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.348,
"final": 1.6237,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 3.245,
"final": 2.7186,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.019,
"final": 1.011,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.1485,
"final": 5.1485,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3736,
"final": 1.3736,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 47.0,
"ER": 27,
"H": 52,
"BB": 13,
"SO": 30,
"HR": 9,
"ERA": 5.170212765957446,
"WHIP": 1.3829787234042552,
"K9": 5.744680851063829,
"HR9": 1.7234042553191486,
"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-14T00:00:00"
},
"recent_form_boost": 1.0811210755059677,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 2.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "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": 5.0,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SD",
"games": 154,
"wins": 85,
"losses": 69,
"win_pct": 0.5519,
"runs_scored": 676.0,
"runs_allowed": 640.0,
"run_differential": 36.0,
"run_differential_per_game": 0.2338,
"avg_runs_scored": 4.3896,
"avg_runs_allowed": 4.1558,
"offense_index": 0.9769,
"defense_index": 1.0812,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 9,
"losses": 1,
"win_pct": 0.9,
"avg_runs_scored": 7.1,
"avg_runs_allowed": 4.4,
"run_differential": 27.0
},
"available": true,
"quality_score": 0.2127
},
"opponent": {
"team": "MIA",
"games": 154,
"wins": 76,
"losses": 78,
"win_pct": 0.4935,
"runs_scored": 683.0,
"runs_allowed": 681.0,
"run_differential": 2.0,
"run_differential_per_game": 0.013,
"avg_runs_scored": 4.4351,
"avg_runs_allowed": 4.4221,
"offense_index": 0.987,
"defense_index": 1.0161,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 6.5,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.0389
},
"edges": {
"quality_edge": 0.2516,
"offense_edge": -0.0231,
"opponent_offense_edge": -0.013,
"defense_strength": 0.0812,
"opponent_defense_weakness": -0.0161,
"recent_win_pct_edge": 0.5
},
"player_factors": {
"ip": 1.013,
"run_prevention": 0.9772,
"strikeout": 1.0086
},
"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": 484.0,
"k_percent": 21.0,
"bb_percent": 6.1,
"woba": 0.299,
"xwoba": 0.294,
"sweet_spot_percent": 35.4,
"barrel_batted_rate": 8.4,
"hard_hit_percent": 38.9,
"avg_best_speed": 78.9426,
"avg_hyper_speed": 94.0509,
"whiff_percent": 23.6,
"swing_percent": 47.9
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1713,
"command_and_miss": 0.0157,
"regression_edge": 0.1429,
"xwoba_edge": 0.5,
"barrel_edge": -0.2444,
"hard_hit_edge": -0.1286,
"whiff_edge": -0.2,
"bb_edge": 0.75,
"pitch_design_score": 0.0017
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663554",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 77,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 77,
"pitch_usage": 0.0,
"release_speed": 89.88145097980791,
"release_spin_rate": 2089.4625149385747,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 77,
"pitch_usage": 0.0,
"release_speed": 89.88145097980791,
"release_spin_rate": 2089.4625149385747,
"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.8815,
"release_spin_rate": 2089.4625,
"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.0017,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.012,
"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.1144,
"sample_weight": 1.0,
"run_prevention_factor": 0.9903,
"strikeout_factor": 0.9863,
"walk_factor": 0.94,
"homer_factor": 1.0097,
"woba_minus_xwoba": 0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "663554",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9903,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9903,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.94,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0097,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9863,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 2,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 98,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was +2."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -6 outs from the projected workload."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +3."
}
],
"provenance": {
"prediction": "output/games/20260919_MIA@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"
}
} |
| 20260919 | 20260919_MIL@BAL | away | Robert Gasser | Robert Gasser | True | 5.0 | 7.0 | 6 | 3 | 0 | -3 | 6/3 | 2/3 | 7/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.297577854671281,
"WHIP": 1.2664359861591696,
"IP": 96.1,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 5.056,
"recent_avg_IP": 4.8,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0085,
"sample_weight": 1.0,
"run_prevention_factor": 0.9993,
"strikeout_factor": 0.9857,
"walk_factor": 0.962,
"homer_factor": 0.9708,
"regression_flag": "neutral",
"k_percent": 22.1,
"bb_percent": 7.2,
"woba": 0.322,
"xwoba": 0.315,
"barrel_percent": 7.0,
"hard_hit_percent": 33.3,
"whiff_percent": 22.4
},
"espn_rank": {
"rank": 219,
"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": "688107",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.0,
"ER": 9.0,
"R": 10.0,
"H": 19.0,
"BB": 12.0,
"SO": 24.0,
"HR": 1.0,
"BF": 103.0,
"Pitches": 407.0
},
"per_game": {
"IP": 4.2,
"ER": 1.8,
"R": 2.0,
"H": 3.8,
"BB": 2.4,
"SO": 4.8,
"HR": 0.2,
"BF": 20.6,
"Pitches": 81.4
},
"rates": {
"ERA": 3.5217,
"WHIP": 1.3478,
"ER_per_IP": 0.3913,
"H_per_IP": 0.82609,
"BB_per_IP": 0.52174,
"SO_per_IP": 1.04348,
"HR_per_IP": 0.04348
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.0,
"ER": 19.0,
"R": 20.0,
"H": 46.0,
"BB": 17.0,
"SO": 49.0,
"HR": 4.0,
"BF": 216.0,
"Pitches": 842.0
},
"per_game": {
"IP": 5.0,
"ER": 1.9,
"R": 2.0,
"H": 4.6,
"BB": 1.7,
"SO": 4.9,
"HR": 0.4,
"BF": 21.6,
"Pitches": 84.2
},
"rates": {
"ERA": 3.42,
"WHIP": 1.26,
"ER_per_IP": 0.38,
"H_per_IP": 0.92,
"BB_per_IP": 0.34,
"SO_per_IP": 0.98,
"HR_per_IP": 0.08
}
},
"season": {
"games": 19,
"totals": {
"IP": 96.1,
"ER": 46.0,
"R": 48.0,
"H": 91.0,
"BB": 31.0,
"SO": 92.0,
"HR": 14.0,
"BF": 417.0,
"Pitches": 1623.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4211,
"R": 2.5263,
"H": 4.7895,
"BB": 1.6316,
"SO": 4.8421,
"HR": 0.7368,
"BF": 21.9474,
"Pitches": 85.4211
},
"rates": {
"ERA": 4.2976,
"WHIP": 1.2664,
"ER_per_IP": 0.47751,
"H_per_IP": 0.94464,
"BB_per_IP": 0.3218,
"SO_per_IP": 0.95502,
"HR_per_IP": 0.14533
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.08,
"predicted_H": 4.407,
"predicted_BB": 1.998,
"predicted_SO": 4.83,
"predicted_HR": 0.447,
"predicted_ERA": 3.8357,
"predicted_WHIP": 1.3122
}
},
"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.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.08,
"final": 2.045,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.407,
"final": 5.1047,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.998,
"final": 1.9989,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.83,
"final": 5.3425,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.447,
"final": 0.6892,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.8357,
"final": 3.8357,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3122,
"final": 1.3122,
"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.0,
"ER": 19,
"H": 46,
"BB": 17,
"SO": 49,
"HR": 4,
"ERA": 3.42,
"WHIP": 1.26,
"K9": 8.82,
"HR9": 0.72,
"games_pitched": 10,
"quality_starts": 2,
"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-13T00:00:00"
},
"recent_form_boost": 0.8811476712506486,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_BB": 2.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": "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": 2.0,
"predicted_ER": 2.0,
"predicted_H": 6.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": 2.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 2.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": 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.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIL",
"games": 154,
"wins": 96,
"losses": 58,
"win_pct": 0.6234,
"runs_scored": 798.0,
"runs_allowed": 600.0,
"run_differential": 198.0,
"run_differential_per_game": 1.2857,
"avg_runs_scored": 5.1818,
"avg_runs_allowed": 3.8961,
"offense_index": 1.1503,
"defense_index": 1.1562,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 7.2,
"avg_runs_allowed": 4.2,
"run_differential": 30.0
},
"available": true,
"quality_score": 0.3669
},
"opponent": {
"team": "BAL",
"games": 154,
"wins": 75,
"losses": 79,
"win_pct": 0.487,
"runs_scored": 693.0,
"runs_allowed": 720.0,
"run_differential": -27.0,
"run_differential_per_game": -0.1753,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 4.6753,
"offense_index": 0.999,
"defense_index": 0.9635,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 5.0,
"run_differential": 2.0
},
"available": true,
"quality_score": 0.0025
},
"edges": {
"quality_edge": 0.3644,
"offense_edge": 0.1503,
"opponent_offense_edge": -0.001,
"defense_strength": 0.1562,
"opponent_defense_weakness": 0.0365,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0193,
"run_prevention": 0.966,
"strikeout": 1.011
},
"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": 394.0,
"k_percent": 22.1,
"bb_percent": 7.2,
"woba": 0.322,
"xwoba": 0.315,
"sweet_spot_percent": 38.2,
"barrel_batted_rate": 7.0,
"hard_hit_percent": 33.3,
"avg_best_speed": 74.944,
"avg_hyper_speed": 93.0391,
"whiff_percent": 22.4,
"swing_percent": 49.8
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0047,
"command_and_miss": -0.0286,
"regression_edge": 0.2,
"xwoba_edge": -0.1,
"barrel_edge": 0.0667,
"hard_hit_edge": 0.6714,
"whiff_edge": -0.3714,
"bb_edge": 0.475,
"pitch_design_score": -0.0832
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "688107",
"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.36534755962889,
"release_spin_rate": 2277.9793761662236,
"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.36534755962889,
"release_spin_rate": 2277.9793761662236,
"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.3653,
"release_spin_rate": 2277.9794,
"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.0832,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5945,
"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.0085,
"sample_weight": 1.0,
"run_prevention_factor": 0.9993,
"strikeout_factor": 0.9857,
"walk_factor": 0.962,
"homer_factor": 0.9708,
"woba_minus_xwoba": 0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "688107",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9993,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9993,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.962,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9708,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9857,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 6,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 101,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +6 outs from the projected workload."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260919_MIL@BAL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_MIL@BAL | home | Trevor Rogers | Trevor Rogers | True | 6.0 | 8.0 | 6 | 3 | 1 | -2 | 5/3 | 2/1 | 9/10 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.224101479915434,
"WHIP": 1.2177589852008457,
"IP": 157.2,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.631,
"recent_avg_IP": 6.4,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2156,
"sample_weight": 1.0,
"run_prevention_factor": 0.9817,
"strikeout_factor": 0.9926,
"walk_factor": 0.934,
"homer_factor": 0.967,
"regression_flag": "neutral",
"k_percent": 21.8,
"bb_percent": 5.8,
"woba": 0.31,
"xwoba": 0.296,
"barrel_percent": 6.8,
"hard_hit_percent": 36.1,
"whiff_percent": 23.9
},
"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": 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": "669432",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 32.0,
"ER": 16.0,
"R": 16.0,
"H": 32.0,
"BB": 3.0,
"SO": 35.0,
"HR": 6.0,
"BF": 126.0,
"Pitches": 482.0
},
"per_game": {
"IP": 6.1,
"ER": 3.2,
"R": 3.2,
"H": 6.4,
"BB": 0.6,
"SO": 7.0,
"HR": 1.2,
"BF": 25.2,
"Pitches": 96.4
},
"rates": {
"ERA": 4.5,
"WHIP": 1.0938,
"ER_per_IP": 0.5,
"H_per_IP": 1.0,
"BB_per_IP": 0.09375,
"SO_per_IP": 1.09375,
"HR_per_IP": 0.1875
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.0,
"ER": 28.0,
"R": 31.0,
"H": 60.0,
"BB": 6.0,
"SO": 66.0,
"HR": 9.0,
"BF": 246.0,
"Pitches": 934.0
},
"per_game": {
"IP": 6.0,
"ER": 2.8,
"R": 3.1,
"H": 6.0,
"BB": 0.6,
"SO": 6.6,
"HR": 0.9,
"BF": 24.6,
"Pitches": 93.4
},
"rates": {
"ERA": 4.1311,
"WHIP": 1.082,
"ER_per_IP": 0.45902,
"H_per_IP": 0.98361,
"BB_per_IP": 0.09836,
"SO_per_IP": 1.08197,
"HR_per_IP": 0.14754
}
},
"season": {
"games": 28,
"totals": {
"IP": 157.2,
"ER": 74.0,
"R": 79.0,
"H": 154.0,
"BB": 38.0,
"SO": 143.0,
"HR": 19.0,
"BF": 655.0,
"Pitches": 2535.0
},
"per_game": {
"IP": 5.2,
"ER": 2.6429,
"R": 2.8214,
"H": 5.5,
"BB": 1.3571,
"SO": 5.1071,
"HR": 0.6786,
"BF": 23.3929,
"Pitches": 90.5357
},
"rates": {
"ERA": 4.2241,
"WHIP": 1.2178,
"ER_per_IP": 0.46934,
"H_per_IP": 0.97674,
"BB_per_IP": 0.24101,
"SO_per_IP": 0.90698,
"HR_per_IP": 0.12051
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.938,
"predicted_H": 5.998,
"predicted_BB": 0.989,
"predicted_SO": 6.281,
"predicted_HR": 0.961,
"predicted_ERA": 4.3549,
"predicted_WHIP": 1.151
}
},
"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": 3.0,
"form": 2.938,
"final": 2.9637,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.998,
"final": 5.5848,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 0.989,
"final": 1.4076,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 9.0,
"form": 6.281,
"final": 7.4067,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.961,
"final": 1.3912,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.3549,
"final": 4.3549,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.151,
"final": 1.151,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 61.0,
"ER": 28,
"H": 60,
"BB": 6,
"SO": 66,
"HR": 9,
"ERA": 4.131147540983607,
"WHIP": 1.0819672131147542,
"K9": 9.737704918032787,
"HR9": 1.3278688524590163,
"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-13T00:00:00"
},
"recent_form_boost": 0.9567009499391732,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 9.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
}
}
],
"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": 2.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 6.0,
"predicted_SO": 9.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 2.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 9.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BAL",
"games": 154,
"wins": 75,
"losses": 79,
"win_pct": 0.487,
"runs_scored": 693.0,
"runs_allowed": 720.0,
"run_differential": -27.0,
"run_differential_per_game": -0.1753,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 4.6753,
"offense_index": 0.999,
"defense_index": 0.9635,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 5.0,
"run_differential": 2.0
},
"available": true,
"quality_score": 0.0025
},
"opponent": {
"team": "MIL",
"games": 154,
"wins": 96,
"losses": 58,
"win_pct": 0.6234,
"runs_scored": 798.0,
"runs_allowed": 600.0,
"run_differential": 198.0,
"run_differential_per_game": 1.2857,
"avg_runs_scored": 5.1818,
"avg_runs_allowed": 3.8961,
"offense_index": 1.1503,
"defense_index": 1.1562,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 7.2,
"avg_runs_allowed": 4.2,
"run_differential": 30.0
},
"available": true,
"quality_score": 0.3669
},
"edges": {
"quality_edge": -0.3644,
"offense_edge": -0.001,
"opponent_offense_edge": 0.1503,
"defense_strength": -0.0365,
"opponent_defense_weakness": -0.1562,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9783,
"run_prevention": 1.0459,
"strikeout": 0.977
},
"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": 625.0,
"k_percent": 21.8,
"bb_percent": 5.8,
"woba": 0.31,
"xwoba": 0.296,
"sweet_spot_percent": 31.8,
"barrel_batted_rate": 6.8,
"hard_hit_percent": 36.1,
"avg_best_speed": 77.2365,
"avg_hyper_speed": 93.6992,
"whiff_percent": 23.9,
"swing_percent": 53.1
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.2735,
"command_and_miss": 0.0971,
"regression_edge": 0.4,
"xwoba_edge": 0.4429,
"barrel_edge": 0.1111,
"hard_hit_edge": 0.2714,
"whiff_edge": -0.1571,
"bb_edge": 0.825,
"pitch_design_score": -0.0353
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669432",
"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.22143098046523,
"release_spin_rate": 2205.045117403977,
"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.22143098046523,
"release_spin_rate": 2205.045117403977,
"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.2214,
"release_spin_rate": 2205.0451,
"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.0353,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.252,
"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.2156,
"sample_weight": 1.0,
"run_prevention_factor": 0.9817,
"strikeout_factor": 0.9926,
"walk_factor": 0.934,
"homer_factor": 0.967,
"woba_minus_xwoba": 0.014,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669432",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9817,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.9817,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.934,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.967,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 0.9926,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 9,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 25,
"Pitches": 101,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +6 outs from the projected workload."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260919_MIL@BAL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_MIN@LAA | away | Joe Ryan | Joe Ryan | True | 5.0 | 5.0 | 0 | 0 | 2 | 2 | 4/7 | 0/1 | 4/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.837905236907731,
"WHIP": 1.1596009975062345,
"IP": 133.2,
"games_started": null,
"games_pitched": 25,
"role_avg_IP": 5.347,
"recent_avg_IP": 4.667,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.165,
"sample_weight": 1.0,
"run_prevention_factor": 0.986,
"strikeout_factor": 1.0246,
"walk_factor": 0.92,
"homer_factor": 1.0583,
"regression_flag": "neutral",
"k_percent": 25.9,
"bb_percent": 5.1,
"woba": 0.308,
"xwoba": 0.296,
"barrel_percent": 10.2,
"hard_hit_percent": 41.5,
"whiff_percent": 25.4
},
"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": 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": "657746",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 25,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.1,
"ER": 22.0,
"R": 24.0,
"H": 35.0,
"BB": 4.0,
"SO": 18.0,
"HR": 10.0,
"BF": 114.0,
"Pitches": 420.0
},
"per_game": {
"IP": 4.2,
"ER": 4.4,
"R": 4.8,
"H": 7.0,
"BB": 0.8,
"SO": 3.6,
"HR": 2.0,
"BF": 22.8,
"Pitches": 84.0
},
"rates": {
"ERA": 8.4857,
"WHIP": 1.6714,
"ER_per_IP": 0.94286,
"H_per_IP": 1.5,
"BB_per_IP": 0.17143,
"SO_per_IP": 0.77143,
"HR_per_IP": 0.42857
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.1,
"ER": 28.0,
"R": 36.0,
"H": 60.0,
"BB": 13.0,
"SO": 54.0,
"HR": 12.0,
"BF": 232.0,
"Pitches": 906.0
},
"per_game": {
"IP": 5.0,
"ER": 2.8,
"R": 3.6,
"H": 6.0,
"BB": 1.3,
"SO": 5.4,
"HR": 1.2,
"BF": 23.2,
"Pitches": 90.6
},
"rates": {
"ERA": 4.9091,
"WHIP": 1.4221,
"ER_per_IP": 0.54545,
"H_per_IP": 1.16883,
"BB_per_IP": 0.25325,
"SO_per_IP": 1.05195,
"HR_per_IP": 0.23377
}
},
"season": {
"games": 25,
"totals": {
"IP": 133.2,
"ER": 57.0,
"R": 70.0,
"H": 126.0,
"BB": 29.0,
"SO": 146.0,
"HR": 20.0,
"BF": 564.0,
"Pitches": 2239.0
},
"per_game": {
"IP": 5.1,
"ER": 2.28,
"R": 2.8,
"H": 5.04,
"BB": 1.16,
"SO": 5.84,
"HR": 0.8,
"BF": 22.56,
"Pitches": 89.56
},
"rates": {
"ERA": 3.8379,
"WHIP": 1.1596,
"ER_per_IP": 0.42643,
"H_per_IP": 0.94264,
"BB_per_IP": 0.21696,
"SO_per_IP": 1.09227,
"HR_per_IP": 0.14963
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 3.296,
"predicted_H": 6.034,
"predicted_BB": 1.168,
"predicted_SO": 4.606,
"predicted_HR": 1.373,
"predicted_ERA": 6.016,
"predicted_WHIP": 1.4607
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4204,
"form_weight": 0.5796,
"form_reliability": 0.8333,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 0.0,
"form": 3.296,
"final": 1.9103,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 6.034,
"final": 5.1788,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.168,
"final": 0.6769,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.606,
"final": 4.3512,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.373,
"final": 0.7957,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.016,
"final": 6.016,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4607,
"final": 1.4607,
"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": 28,
"H": 60,
"BB": 13,
"SO": 54,
"HR": 12,
"ERA": 4.909090909090909,
"WHIP": 1.4220779220779223,
"K9": 9.467532467532468,
"HR9": 2.103896103896104,
"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-13T00:00:00"
},
"recent_form_boost": 1.0527223465753242,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 0.0,
"predicted_H": 4.0,
"predicted_BB": 0.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
}
}
],
"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": 0.0,
"predicted_ER": 0.0,
"predicted_H": 4.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": 0.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 0.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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIN",
"games": 154,
"wins": 72,
"losses": 82,
"win_pct": 0.4675,
"runs_scored": 699.0,
"runs_allowed": 770.0,
"run_differential": -71.0,
"run_differential_per_game": -0.461,
"avg_runs_scored": 4.539,
"avg_runs_allowed": 5.0,
"offense_index": 1.0095,
"defense_index": 0.8993,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.9,
"avg_runs_allowed": 5.1,
"run_differential": -22.0
},
"available": true,
"quality_score": -0.119
},
"opponent": {
"team": "LAA",
"games": 154,
"wins": 59,
"losses": 95,
"win_pct": 0.3831,
"runs_scored": 619.0,
"runs_allowed": 699.0,
"run_differential": -80.0,
"run_differential_per_game": -0.5195,
"avg_runs_scored": 4.0195,
"avg_runs_allowed": 4.539,
"offense_index": 0.894,
"defense_index": 0.9906,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.0,
"run_differential": 0.0
},
"available": true,
"quality_score": -0.1629
},
"edges": {
"quality_edge": 0.0439,
"offense_edge": 0.0095,
"opponent_offense_edge": -0.106,
"defense_strength": -0.1007,
"opponent_defense_weakness": 0.0094,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.003,
"run_prevention": 0.9909,
"strikeout": 1.0098
},
"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": 520.0,
"k_percent": 25.9,
"bb_percent": 5.1,
"woba": 0.308,
"xwoba": 0.296,
"sweet_spot_percent": 34.9,
"barrel_batted_rate": 10.2,
"hard_hit_percent": 41.5,
"avg_best_speed": 78.7696,
"avg_hyper_speed": 94.4417,
"whiff_percent": 25.4,
"swing_percent": 49.9
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0248,
"command_and_miss": 0.4707,
"regression_edge": 0.3429,
"xwoba_edge": 0.4429,
"barrel_edge": -0.6444,
"hard_hit_edge": -0.5,
"whiff_edge": 0.0571,
"bb_edge": 1.0,
"pitch_design_score": -0.0695
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "657746",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 86,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 88.6104751929775,
"release_spin_rate": 2381.8329854899443,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 88.6104751929775,
"release_spin_rate": 2381.8329854899443,
"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.6105,
"release_spin_rate": 2381.833,
"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.0695,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4964,
"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.165,
"sample_weight": 1.0,
"run_prevention_factor": 0.986,
"strikeout_factor": 1.0246,
"walk_factor": 0.92,
"homer_factor": 1.0583,
"woba_minus_xwoba": 0.012,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "657746",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 0.986,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 0.986,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.92,
"adjusted": 1
},
"predicted_HR": {
"original": 2.0,
"factor": 1.0583,
"adjusted": 2
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0246,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 0,
"predicted_ER": 0,
"predicted_BB": 0,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 19,
"Pitches": 75,
"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/20260919_MIN@LAA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_MIN@LAA | home | Reid Detmers | Reid Detmers | True | 6.0 | 5.0 | -3 | 2 | 4 | 2 | 4/6 | 0/0 | 9/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.3620689655172415,
"WHIP": 1.0459770114942528,
"IP": 174.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.8,
"recent_avg_IP": 6.2,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4653,
"sample_weight": 1.0,
"run_prevention_factor": 0.9605,
"strikeout_factor": 1.06,
"walk_factor": 0.95,
"homer_factor": 0.9769,
"regression_flag": "neutral",
"k_percent": 28.6,
"bb_percent": 6.6,
"woba": 0.27,
"xwoba": 0.279,
"barrel_percent": 7.6,
"hard_hit_percent": 37.9,
"whiff_percent": 28.9
},
"espn_rank": {
"rank": 19,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "672282",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.0,
"ER": 5.0,
"R": 5.0,
"H": 28.0,
"BB": 3.0,
"SO": 32.0,
"HR": 1.0,
"BF": 118.0,
"Pitches": 481.0
},
"per_game": {
"IP": 6.1,
"ER": 1.0,
"R": 1.0,
"H": 5.6,
"BB": 0.6,
"SO": 6.4,
"HR": 0.2,
"BF": 23.6,
"Pitches": 96.2
},
"rates": {
"ERA": 1.4516,
"WHIP": 1.0,
"ER_per_IP": 0.16129,
"H_per_IP": 0.90323,
"BB_per_IP": 0.09677,
"SO_per_IP": 1.03226,
"HR_per_IP": 0.03226
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 59.1,
"ER": 12.0,
"R": 12.0,
"H": 43.0,
"BB": 11.0,
"SO": 69.0,
"HR": 6.0,
"BF": 223.0,
"Pitches": 911.0
},
"per_game": {
"IP": 6.0,
"ER": 1.2,
"R": 1.2,
"H": 4.3,
"BB": 1.1,
"SO": 6.9,
"HR": 0.6,
"BF": 22.3,
"Pitches": 91.1
},
"rates": {
"ERA": 1.8202,
"WHIP": 0.9101,
"ER_per_IP": 0.20225,
"H_per_IP": 0.72472,
"BB_per_IP": 0.18539,
"SO_per_IP": 1.16292,
"HR_per_IP": 0.10112
}
},
"season": {
"games": 30,
"totals": {
"IP": 174.0,
"ER": 65.0,
"R": 68.0,
"H": 136.0,
"BB": 46.0,
"SO": 199.0,
"HR": 18.0,
"BF": 697.0,
"Pitches": 2791.0
},
"per_game": {
"IP": 5.2,
"ER": 2.1667,
"R": 2.2667,
"H": 4.5333,
"BB": 1.5333,
"SO": 6.6333,
"HR": 0.6,
"BF": 23.2333,
"Pitches": 93.0333
},
"rates": {
"ERA": 3.3621,
"WHIP": 1.046,
"ER_per_IP": 0.37356,
"H_per_IP": 0.78161,
"BB_per_IP": 0.26437,
"SO_per_IP": 1.14368,
"HR_per_IP": 0.10345
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.576,
"predicted_H": 5.098,
"predicted_BB": 1.165,
"predicted_SO": 6.538,
"predicted_HR": 0.496,
"predicted_ERA": 2.3359,
"predicted_WHIP": 1.0317
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.576,
"final": 1.75,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.098,
"final": 4.6474,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.165,
"final": 0.6869,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 9.0,
"form": 6.538,
"final": 7.5483,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.496,
"final": 1.1132,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.3359,
"final": 2.3359,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0317,
"final": 1.0317,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 59.1,
"ER": 12,
"H": 43,
"BB": 11,
"SO": 69,
"HR": 6,
"ERA": 1.8202247191011236,
"WHIP": 0.9101123595505618,
"K9": 10.46629213483146,
"HR9": 0.9101123595505618,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": true,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 0.692425761138289,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 0.0,
"predicted_SO": 9.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 0,
"predicted_SO": 9,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "672282",
"player_name": "Reid Detmers",
"position": "Starter",
"team": "LAA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 6.0,
"predicted_SO": 9.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 9.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": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 9.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": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 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": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAA",
"games": 154,
"wins": 59,
"losses": 95,
"win_pct": 0.3831,
"runs_scored": 619.0,
"runs_allowed": 699.0,
"run_differential": -80.0,
"run_differential_per_game": -0.5195,
"avg_runs_scored": 4.0195,
"avg_runs_allowed": 4.539,
"offense_index": 0.894,
"defense_index": 0.9906,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.0,
"run_differential": 0.0
},
"available": true,
"quality_score": -0.1629
},
"opponent": {
"team": "MIN",
"games": 154,
"wins": 72,
"losses": 82,
"win_pct": 0.4675,
"runs_scored": 699.0,
"runs_allowed": 770.0,
"run_differential": -71.0,
"run_differential_per_game": -0.461,
"avg_runs_scored": 4.539,
"avg_runs_allowed": 5.0,
"offense_index": 1.0095,
"defense_index": 0.8993,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.9,
"avg_runs_allowed": 5.1,
"run_differential": -22.0
},
"available": true,
"quality_score": -0.119
},
"edges": {
"quality_edge": -0.0439,
"offense_edge": -0.106,
"opponent_offense_edge": 0.0095,
"defense_strength": -0.0094,
"opponent_defense_weakness": 0.1007,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9976,
"run_prevention": 1.0047,
"strikeout": 0.9979
},
"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": 669.0,
"k_percent": 28.6,
"bb_percent": 6.6,
"woba": 0.27,
"xwoba": 0.279,
"sweet_spot_percent": 31.2,
"barrel_batted_rate": 7.6,
"hard_hit_percent": 37.9,
"avg_best_speed": 79.8382,
"avg_hyper_speed": 94.2156,
"whiff_percent": 28.9,
"swing_percent": 49.5
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.5459,
"command_and_miss": 0.7443,
"regression_edge": -0.2571,
"xwoba_edge": 0.9286,
"barrel_edge": -0.0667,
"hard_hit_edge": 0.0143,
"whiff_edge": 0.5571,
"bb_edge": 0.625,
"pitch_design_score": -0.1029
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "672282",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 95,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 95,
"pitch_usage": 0.0,
"release_speed": 88.01397933596388,
"release_spin_rate": 2233.9820878343417,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 95,
"pitch_usage": 0.0,
"release_speed": 88.01397933596388,
"release_spin_rate": 2233.9820878343417,
"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.014,
"release_spin_rate": 2233.9821,
"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.1029,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.735,
"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.4653,
"sample_weight": 1.0,
"run_prevention_factor": 0.9605,
"strikeout_factor": 1.06,
"walk_factor": 0.95,
"homer_factor": 0.9769,
"woba_minus_xwoba": -0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "672282",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9605,
"adjusted": 1
},
"predicted_H": {
"original": 5.0,
"factor": 0.9605,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.95,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9769,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.06,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 9,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 22,
"Pitches": 94,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was +2."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260919_MIN@LAA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_NYY@ARI | away | Cam Schlittler | Cam Schlittler | True | 6.1 | 6.0 | -1 | 1 | 1 | 0 | 1/3 | 1/3 | 8/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 1.9494584837545128,
"WHIP": 0.904332129963899,
"IP": 184.2,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.957,
"recent_avg_IP": 6.533,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.6955,
"sample_weight": 1.0,
"run_prevention_factor": 0.9409,
"strikeout_factor": 1.0783,
"walk_factor": 0.94,
"homer_factor": 0.9718,
"regression_flag": "neutral",
"k_percent": 31.6,
"bb_percent": 6.1,
"woba": 0.243,
"xwoba": 0.263,
"barrel_percent": 7.7,
"hard_hit_percent": 39.1,
"whiff_percent": 29.1
},
"espn_rank": {
"rank": 2,
"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": "693645",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 32.2,
"ER": 3.0,
"R": 3.0,
"H": 14.0,
"BB": 10.0,
"SO": 39.0,
"HR": 2.0,
"BF": 120.0,
"Pitches": 487.0
},
"per_game": {
"IP": 6.2,
"ER": 0.6,
"R": 0.6,
"H": 2.8,
"BB": 2.0,
"SO": 7.8,
"HR": 0.4,
"BF": 24.0,
"Pitches": 97.4
},
"rates": {
"ERA": 0.8265,
"WHIP": 0.7347,
"ER_per_IP": 0.09184,
"H_per_IP": 0.42857,
"BB_per_IP": 0.30612,
"SO_per_IP": 1.19388,
"HR_per_IP": 0.06122
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.2,
"ER": 10.0,
"R": 10.0,
"H": 30.0,
"BB": 19.0,
"SO": 83.0,
"HR": 4.0,
"BF": 233.0,
"Pitches": 955.0
},
"per_game": {
"IP": 6.0,
"ER": 1.0,
"R": 1.0,
"H": 3.0,
"BB": 1.9,
"SO": 8.3,
"HR": 0.4,
"BF": 23.3,
"Pitches": 95.5
},
"rates": {
"ERA": 1.4595,
"WHIP": 0.7946,
"ER_per_IP": 0.16216,
"H_per_IP": 0.48649,
"BB_per_IP": 0.30811,
"SO_per_IP": 1.34595,
"HR_per_IP": 0.06486
}
},
"season": {
"games": 31,
"totals": {
"IP": 184.2,
"ER": 40.0,
"R": 47.0,
"H": 123.0,
"BB": 44.0,
"SO": 228.0,
"HR": 16.0,
"BF": 722.0,
"Pitches": 2873.0
},
"per_game": {
"IP": 6.0,
"ER": 1.2903,
"R": 1.5161,
"H": 3.9677,
"BB": 1.4194,
"SO": 7.3548,
"HR": 0.5161,
"BF": 23.2903,
"Pitches": 92.6774
},
"rates": {
"ERA": 1.9495,
"WHIP": 0.9043,
"ER_per_IP": 0.21661,
"H_per_IP": 0.66606,
"BB_per_IP": 0.23827,
"SO_per_IP": 1.23466,
"HR_per_IP": 0.08664
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 1.213,
"predicted_H": 3.552,
"predicted_BB": 1.921,
"predicted_SO": 7.635,
"predicted_HR": 0.497,
"predicted_ERA": 1.7313,
"predicted_WHIP": 0.8682
}
},
"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.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.213,
"final": 1.5346,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 3.552,
"final": 2.509,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.921,
"final": 1.5446,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 7.635,
"final": 6.5581,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.497,
"final": 0.2939,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 1.7313,
"final": 1.7313,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.8682,
"final": 0.8682,
"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": 10,
"H": 30,
"BB": 19,
"SO": 83,
"HR": 4,
"ERA": 1.4594594594594594,
"WHIP": 0.7945945945945946,
"K9": 12.113513513513512,
"HR9": 0.5837837837837837,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": true,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-13T00:00:00"
},
"recent_form_boost": 0.68680911110254,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 1.0,
"predicted_BB": 1.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
}
},
{
"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": 1,
"predicted_BB": 1,
"predicted_SO": 8,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "693645",
"player_name": "Cam Schlittler",
"position": "Starter",
"team": "NYY",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 6.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": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"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": 3,
"boosted_metrics": 1,
"deboosted_metrics": 2,
"better_metrics": 2,
"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_ER",
"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": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_R": 1.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.1,
"after": 6.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"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": 3,
"boosted_metrics": 1,
"deboosted_metrics": 2,
"better_metrics": 2,
"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_ER",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYY",
"games": 153,
"wins": 89,
"losses": 64,
"win_pct": 0.5817,
"runs_scored": 706.0,
"runs_allowed": 563.0,
"run_differential": 143.0,
"run_differential_per_game": 0.9346,
"avg_runs_scored": 4.6144,
"avg_runs_allowed": 3.6797,
"offense_index": 1.0279,
"defense_index": 1.2199,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.0,
"avg_runs_allowed": 3.4,
"run_differential": 26.0
},
"available": true,
"quality_score": 0.289
},
"opponent": {
"team": "ARI",
"games": 154,
"wins": 80,
"losses": 74,
"win_pct": 0.5195,
"runs_scored": 680.0,
"runs_allowed": 687.0,
"run_differential": -7.0,
"run_differential_per_game": -0.0455,
"avg_runs_scored": 4.4156,
"avg_runs_allowed": 4.461,
"offense_index": 0.9836,
"defense_index": 1.0063,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 5.0,
"run_differential": -6.0
},
"available": true,
"quality_score": -0.024
},
"edges": {
"quality_edge": 0.313,
"offense_edge": 0.0279,
"opponent_offense_edge": -0.0164,
"defense_strength": 0.2199,
"opponent_defense_weakness": -0.0063,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0198,
"run_prevention": 0.9597,
"strikeout": 1.0107
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "693645",
"profile": {
"available": true,
"pitcher_id": "693645",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 670.0,
"k_percent": 31.6,
"bb_percent": 6.1,
"woba": 0.243,
"xwoba": 0.263,
"sweet_spot_percent": 32.8,
"barrel_batted_rate": 7.7,
"hard_hit_percent": 39.1,
"avg_best_speed": 77.8851,
"avg_hyper_speed": 93.8674,
"whiff_percent": 29.1,
"swing_percent": 52.0
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.8527,
"command_and_miss": 0.9721,
"regression_edge": -0.5714,
"xwoba_edge": 1.3857,
"barrel_edge": -0.0889,
"hard_hit_edge": -0.1571,
"whiff_edge": 0.5857,
"bb_edge": 0.75,
"pitch_design_score": 0.28
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "693645",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 98,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 98,
"pitch_usage": 0.0,
"release_speed": 95.84547033579747,
"release_spin_rate": 2511.0300466287918,
"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": 95.84547033579747,
"release_spin_rate": 2511.0300466287918,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 95.8455,
"release_spin_rate": 2511.03,
"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.6955,
"sample_weight": 1.0,
"run_prevention_factor": 0.9409,
"strikeout_factor": 1.0783,
"walk_factor": 0.94,
"homer_factor": 0.9718,
"woba_minus_xwoba": -0.02,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "693645",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9409,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 0.9409,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 0.94,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9718,
"adjusted": 0
},
"predicted_SO": {
"original": 8.0,
"factor": 1.0783,
"adjusted": 9
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 1,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 91,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260919_NYY@ARI.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_NYY@ARI | home | Brandon Pfaadt | Brandon Pfaadt | True | 6.1 | 4.1 | -6 | 2 | 1 | -1 | 3/4 | 1/1 | 5/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.774193548387097,
"WHIP": 1.1693548387096775,
"IP": 124.0,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 6.039,
"recent_avg_IP": 6.267,
"last_start_IP": 6.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0027,
"sample_weight": 1.0,
"run_prevention_factor": 1.0002,
"strikeout_factor": 0.948,
"walk_factor": 0.932,
"homer_factor": 0.9838,
"regression_flag": "neutral",
"k_percent": 16.4,
"bb_percent": 5.7,
"woba": 0.3,
"xwoba": 0.303,
"barrel_percent": 7.6,
"hard_hit_percent": 35.5,
"whiff_percent": 21.5
},
"espn_rank": {
"rank": 117,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "694297",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.1,
"ER": 20.0,
"R": 20.0,
"H": 35.0,
"BB": 5.0,
"SO": 23.0,
"HR": 6.0,
"BF": 134.0,
"Pitches": 476.0
},
"per_game": {
"IP": 6.1,
"ER": 4.0,
"R": 4.0,
"H": 7.0,
"BB": 1.0,
"SO": 4.6,
"HR": 1.2,
"BF": 26.8,
"Pitches": 95.2
},
"rates": {
"ERA": 5.7447,
"WHIP": 1.2766,
"ER_per_IP": 0.6383,
"H_per_IP": 1.11702,
"BB_per_IP": 0.15957,
"SO_per_IP": 0.73404,
"HR_per_IP": 0.19149
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 65.0,
"ER": 22.0,
"R": 23.0,
"H": 57.0,
"BB": 11.0,
"SO": 40.0,
"HR": 6.0,
"BF": 259.0,
"Pitches": 934.0
},
"per_game": {
"IP": 6.2,
"ER": 2.2,
"R": 2.3,
"H": 5.7,
"BB": 1.1,
"SO": 4.0,
"HR": 0.6,
"BF": 25.9,
"Pitches": 93.4
},
"rates": {
"ERA": 3.0462,
"WHIP": 1.0462,
"ER_per_IP": 0.33846,
"H_per_IP": 0.87692,
"BB_per_IP": 0.16923,
"SO_per_IP": 0.61538,
"HR_per_IP": 0.09231
}
},
"season": {
"games": 27,
"totals": {
"IP": 124.0,
"ER": 52.0,
"R": 56.0,
"H": 116.0,
"BB": 29.0,
"SO": 84.0,
"HR": 14.0,
"BF": 513.0,
"Pitches": 1863.0
},
"per_game": {
"IP": 4.2,
"ER": 1.9259,
"R": 2.0741,
"H": 4.2963,
"BB": 1.0741,
"SO": 3.1111,
"HR": 0.5185,
"BF": 19.0,
"Pitches": 69.0
},
"rates": {
"ERA": 3.7742,
"WHIP": 1.1694,
"ER_per_IP": 0.41935,
"H_per_IP": 0.93548,
"BB_per_IP": 0.23387,
"SO_per_IP": 0.67742,
"HR_per_IP": 0.1129
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 3.029,
"predicted_H": 6.114,
"predicted_BB": 1.284,
"predicted_SO": 4.435,
"predicted_HR": 0.875,
"predicted_ERA": 4.4324,
"predicted_WHIP": 1.2028
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.416,
"form_weight": 0.584,
"form_reliability": 0.8438,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"applied_metrics": {
"predicted_IP": {
"model": 6.1,
"form": 6.0,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 3.029,
"final": 2.6009,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 6.114,
"final": 4.8186,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.284,
"final": 1.1659,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.435,
"final": 4.67,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.875,
"final": 0.927,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4324,
"final": 4.4324,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2028,
"final": 1.2028,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 65.0,
"ER": 22,
"H": 57,
"BB": 11,
"SO": 40,
"HR": 6,
"ERA": 3.046153846153846,
"WHIP": 1.0461538461538462,
"K9": 5.538461538461538,
"HR9": 0.8307692307692308,
"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-12T00:00:00"
},
"recent_form_boost": 0.8337438250968026,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 6.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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 6.1,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 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": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"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": 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": "ARI",
"games": 154,
"wins": 80,
"losses": 74,
"win_pct": 0.5195,
"runs_scored": 680.0,
"runs_allowed": 687.0,
"run_differential": -7.0,
"run_differential_per_game": -0.0455,
"avg_runs_scored": 4.4156,
"avg_runs_allowed": 4.461,
"offense_index": 0.9836,
"defense_index": 1.0063,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 5.0,
"run_differential": -6.0
},
"available": true,
"quality_score": -0.024
},
"opponent": {
"team": "NYY",
"games": 153,
"wins": 89,
"losses": 64,
"win_pct": 0.5817,
"runs_scored": 706.0,
"runs_allowed": 563.0,
"run_differential": 143.0,
"run_differential_per_game": 0.9346,
"avg_runs_scored": 4.6144,
"avg_runs_allowed": 3.6797,
"offense_index": 1.0279,
"defense_index": 1.2199,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.0,
"avg_runs_allowed": 3.4,
"run_differential": 26.0
},
"available": true,
"quality_score": 0.289
},
"edges": {
"quality_edge": -0.313,
"offense_edge": -0.0164,
"opponent_offense_edge": 0.0279,
"defense_strength": 0.0063,
"opponent_defense_weakness": -0.2199,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9866,
"run_prevention": 1.0195,
"strikeout": 0.9884
},
"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": 478.0,
"k_percent": 16.4,
"bb_percent": 5.7,
"woba": 0.3,
"xwoba": 0.303,
"sweet_spot_percent": 32.0,
"barrel_batted_rate": 7.6,
"hard_hit_percent": 35.5,
"avg_best_speed": 78.2927,
"avg_hyper_speed": 93.5218,
"whiff_percent": 21.5,
"swing_percent": 49.8
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1863,
"command_and_miss": -0.365,
"regression_edge": -0.0857,
"xwoba_edge": 0.2429,
"barrel_edge": -0.0667,
"hard_hit_edge": 0.3571,
"whiff_edge": -0.5,
"bb_edge": 0.85,
"pitch_design_score": -0.044
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "694297",
"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": 89.06584503374502,
"release_spin_rate": 2461.4391179803015,
"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": 89.06584503374502,
"release_spin_rate": 2461.4391179803015,
"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.0658,
"release_spin_rate": 2461.4391,
"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.044,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.3143,
"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.0027,
"sample_weight": 1.0,
"run_prevention_factor": 1.0002,
"strikeout_factor": 0.948,
"walk_factor": 0.932,
"homer_factor": 0.9838,
"woba_minus_xwoba": -0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "694297",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0002,
"adjusted": 3
},
"predicted_H": {
"original": 7.0,
"factor": 1.0002,
"adjusted": 7
},
"predicted_BB": {
"original": 1.0,
"factor": 0.932,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9838,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.948,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 5,
"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."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -6 outs from the projected workload."
},
{
"code": "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/20260919_NYY@ARI.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_OAK@CLE | away | Jacob Lopez | Jacob Lopez | True | 4.2 | 2.2 | -6 | 4 | 10 | 6 | 8/10 | 1/0 | 4/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.023255813953488,
"WHIP": 1.4825581395348837,
"IP": 114.2,
"games_started": null,
"games_pitched": 25,
"role_avg_IP": 4.818,
"recent_avg_IP": 5.333,
"last_start_IP": 3.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2835,
"sample_weight": 1.0,
"run_prevention_factor": 0.9759,
"strikeout_factor": 0.9909,
"walk_factor": 1.038,
"homer_factor": 0.9256,
"regression_flag": "positive_pitcher_regression",
"k_percent": 20.9,
"bb_percent": 11.0,
"woba": 0.341,
"xwoba": 0.29,
"barrel_percent": 6.4,
"hard_hit_percent": 31.0,
"whiff_percent": 24.5
},
"espn_rank": {
"rank": 172,
"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": "682052",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 25,
"reference_playing_time": 8.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.2,
"ER": 13.0,
"R": 14.0,
"H": 25.0,
"BB": 10.0,
"SO": 26.0,
"HR": 5.0,
"BF": 115.0,
"Pitches": 488.0
},
"per_game": {
"IP": 5.1,
"ER": 2.6,
"R": 2.8,
"H": 5.0,
"BB": 2.0,
"SO": 5.2,
"HR": 1.0,
"BF": 23.0,
"Pitches": 97.6
},
"rates": {
"ERA": 4.3875,
"WHIP": 1.3125,
"ER_per_IP": 0.4875,
"H_per_IP": 0.9375,
"BB_per_IP": 0.375,
"SO_per_IP": 0.975,
"HR_per_IP": 0.1875
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.0,
"ER": 20.0,
"R": 22.0,
"H": 47.0,
"BB": 20.0,
"SO": 58.0,
"HR": 9.0,
"BF": 230.0,
"Pitches": 949.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0,
"R": 2.2,
"H": 4.7,
"BB": 2.0,
"SO": 5.8,
"HR": 0.9,
"BF": 23.0,
"Pitches": 94.9
},
"rates": {
"ERA": 3.2727,
"WHIP": 1.2182,
"ER_per_IP": 0.36364,
"H_per_IP": 0.85455,
"BB_per_IP": 0.36364,
"SO_per_IP": 1.05455,
"HR_per_IP": 0.16364
}
},
"season": {
"games": 25,
"totals": {
"IP": 114.2,
"ER": 64.0,
"R": 67.0,
"H": 114.0,
"BB": 56.0,
"SO": 107.0,
"HR": 20.0,
"BF": 511.0,
"Pitches": 2086.0
},
"per_game": {
"IP": 4.2,
"ER": 2.56,
"R": 2.68,
"H": 4.56,
"BB": 2.24,
"SO": 4.28,
"HR": 0.8,
"BF": 20.44,
"Pitches": 83.44
},
"rates": {
"ERA": 5.0233,
"WHIP": 1.4826,
"ER_per_IP": 0.55814,
"H_per_IP": 0.99419,
"BB_per_IP": 0.48837,
"SO_per_IP": 0.93314,
"HR_per_IP": 0.17442
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.644,
"predicted_H": 5.269,
"predicted_BB": 2.214,
"predicted_SO": 5.581,
"predicted_HR": 0.974,
"predicted_ERA": 4.1995,
"predicted_WHIP": 1.3205
}
},
"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": 8.0,
"form": 5.2,
"final": 6.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.644,
"final": 3.2141,
"source": "model_form_blend"
},
"predicted_H": {
"model": 8.0,
"form": 5.269,
"final": 6.4172,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.214,
"final": 1.7036,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 5.581,
"final": 4.9163,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.974,
"final": 1.4054,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1995,
"final": 4.1995,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3205,
"final": 1.3205,
"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": 20,
"H": 47,
"BB": 20,
"SO": 58,
"HR": 9,
"ERA": 3.272727272727273,
"WHIP": 1.2181818181818183,
"K9": 9.49090909090909,
"HR9": 1.4727272727272727,
"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-13T00:00:00"
},
"recent_form_boost": 0.8635340348870123,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 8.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_BB": 1.0,
"predicted_SO": 4.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": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 4,
"predicted_H": 8,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "682052",
"player_name": "Jacob Lopez",
"position": "Starter",
"team": "OAK",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_HR": 2.0,
"predicted_IP": 8.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": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_HR": 2.0,
"predicted_IP": 4.2,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_HR": 2.0,
"predicted_IP": 4.2,
"predicted_R": 4.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 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.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 8.0,
"after": 4.2,
"delta": -3.8,
"percent_delta": -0.475,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "OAK",
"games": 154,
"wins": 61,
"losses": 93,
"win_pct": 0.3961,
"runs_scored": 664.0,
"runs_allowed": 880.0,
"run_differential": -216.0,
"run_differential_per_game": -1.4026,
"avg_runs_scored": 4.3117,
"avg_runs_allowed": 5.7143,
"offense_index": 0.96,
"defense_index": 0.7859,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 6.1,
"run_differential": -28.0
},
"available": true,
"quality_score": -0.2951
},
"opponent": {
"team": "CLE",
"games": 154,
"wins": 79,
"losses": 75,
"win_pct": 0.513,
"runs_scored": 636.0,
"runs_allowed": 641.0,
"run_differential": -5.0,
"run_differential_per_game": -0.0325,
"avg_runs_scored": 4.1299,
"avg_runs_allowed": 4.1623,
"offense_index": 0.9196,
"defense_index": 1.079,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 4.7,
"run_differential": 9.0
},
"available": true,
"quality_score": 0.0421
},
"edges": {
"quality_edge": -0.3372,
"offense_edge": -0.04,
"opponent_offense_edge": -0.0804,
"defense_strength": -0.2141,
"opponent_defense_weakness": -0.079,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9833,
"run_prevention": 1.0254,
"strikeout": 0.9963
},
"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": 489.0,
"k_percent": 20.9,
"bb_percent": 11.0,
"woba": 0.341,
"xwoba": 0.29,
"sweet_spot_percent": 32.3,
"barrel_batted_rate": 6.4,
"hard_hit_percent": 31.0,
"avg_best_speed": 71.8316,
"avg_hyper_speed": 92.4449,
"whiff_percent": 24.5,
"swing_percent": 46.1
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3746,
"command_and_miss": -0.1907,
"regression_edge": 1.4571,
"xwoba_edge": 0.6143,
"barrel_edge": 0.2,
"hard_hit_edge": 1.0,
"whiff_edge": -0.0714,
"bb_edge": -0.475,
"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": 95,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 95,
"pitch_usage": 0.0,
"release_speed": 84.00842291505728,
"release_spin_rate": 2263.0128636281993,
"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": 84.00842291505728,
"release_spin_rate": 2263.0128636281993,
"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.0084,
"release_spin_rate": 2263.0129,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.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.2835,
"sample_weight": 1.0,
"run_prevention_factor": 0.9759,
"strikeout_factor": 0.9909,
"walk_factor": 1.038,
"homer_factor": 0.9256,
"woba_minus_xwoba": 0.051,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "682052",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9759,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9759,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.038,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9256,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9909,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 8,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 23,
"Pitches": 98,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 6",
"detail": "Actual minus predicted earned runs was +6; this is the primary run-prevention error."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -6 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260919_OAK@CLE.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_OAK@CLE | home | Tanner Bibee | Tanner Bibee | True | 5.2 | 4.2 | -3 | 1 | 6 | 5 | 2/12 | 0/0 | 5/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.161654135338345,
"WHIP": 1.1842105263157894,
"IP": 177.1,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.72,
"recent_avg_IP": 5.4,
"last_start_IP": 6.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1555,
"sample_weight": 1.0,
"run_prevention_factor": 1.0132,
"strikeout_factor": 0.9771,
"walk_factor": 0.966,
"homer_factor": 1.0302,
"regression_flag": "neutral",
"k_percent": 19.2,
"bb_percent": 7.4,
"woba": 0.307,
"xwoba": 0.318,
"barrel_percent": 8.3,
"hard_hit_percent": 39.2,
"whiff_percent": 23.8
},
"espn_rank": {
"rank": 92,
"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": "676440",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.0,
"ER": 15.0,
"R": 15.0,
"H": 26.0,
"BB": 11.0,
"SO": 23.0,
"HR": 3.0,
"BF": 117.0,
"Pitches": 436.0
},
"per_game": {
"IP": 5.1,
"ER": 3.0,
"R": 3.0,
"H": 5.2,
"BB": 2.2,
"SO": 4.6,
"HR": 0.6,
"BF": 23.4,
"Pitches": 87.2
},
"rates": {
"ERA": 5.0,
"WHIP": 1.3704,
"ER_per_IP": 0.55556,
"H_per_IP": 0.96296,
"BB_per_IP": 0.40741,
"SO_per_IP": 0.85185,
"HR_per_IP": 0.11111
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 58.1,
"ER": 31.0,
"R": 33.0,
"H": 54.0,
"BB": 19.0,
"SO": 48.0,
"HR": 8.0,
"BF": 248.0,
"Pitches": 933.0
},
"per_game": {
"IP": 6.0,
"ER": 3.1,
"R": 3.3,
"H": 5.4,
"BB": 1.9,
"SO": 4.8,
"HR": 0.8,
"BF": 24.8,
"Pitches": 93.3
},
"rates": {
"ERA": 4.7829,
"WHIP": 1.2514,
"ER_per_IP": 0.53143,
"H_per_IP": 0.92571,
"BB_per_IP": 0.32571,
"SO_per_IP": 0.82286,
"HR_per_IP": 0.13714
}
},
"season": {
"games": 31,
"totals": {
"IP": 177.1,
"ER": 82.0,
"R": 86.0,
"H": 156.0,
"BB": 54.0,
"SO": 140.0,
"HR": 28.0,
"BF": 730.0,
"Pitches": 2779.0
},
"per_game": {
"IP": 5.2,
"ER": 2.6452,
"R": 2.7742,
"H": 5.0323,
"BB": 1.7419,
"SO": 4.5161,
"HR": 0.9032,
"BF": 23.5484,
"Pitches": 89.6452
},
"rates": {
"ERA": 4.1617,
"WHIP": 1.1842,
"ER_per_IP": 0.46241,
"H_per_IP": 0.8797,
"BB_per_IP": 0.30451,
"SO_per_IP": 0.78947,
"HR_per_IP": 0.15789
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.964,
"predicted_H": 5.298,
"predicted_BB": 2.033,
"predicted_SO": 4.759,
"predicted_HR": 0.745,
"predicted_ERA": 4.7311,
"predicted_WHIP": 1.3004
}
},
"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": 1.0,
"form": 2.964,
"final": 2.1613,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 5.298,
"final": 3.9502,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.033,
"final": 1.2021,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.759,
"final": 4.8575,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.745,
"final": 0.8492,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.7311,
"final": 4.7311,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3004,
"final": 1.3004,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 58.1,
"ER": 31,
"H": 54,
"BB": 19,
"SO": 48,
"HR": 8,
"ERA": 4.782857142857143,
"WHIP": 1.2514285714285713,
"K9": 7.405714285714286,
"HR9": 1.2342857142857142,
"games_pitched": 10,
"quality_starts": 6,
"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-13T00:00:00"
},
"recent_form_boost": 1.0342548141077916,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 1.0,
"predicted_H": 2.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "676440",
"player_name": "Tanner Bibee",
"position": "Starter",
"team": "CLE",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CLE",
"games": 154,
"wins": 79,
"losses": 75,
"win_pct": 0.513,
"runs_scored": 636.0,
"runs_allowed": 641.0,
"run_differential": -5.0,
"run_differential_per_game": -0.0325,
"avg_runs_scored": 4.1299,
"avg_runs_allowed": 4.1623,
"offense_index": 0.9196,
"defense_index": 1.079,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 4.7,
"run_differential": 9.0
},
"available": true,
"quality_score": 0.0421
},
"opponent": {
"team": "OAK",
"games": 154,
"wins": 61,
"losses": 93,
"win_pct": 0.3961,
"runs_scored": 664.0,
"runs_allowed": 880.0,
"run_differential": -216.0,
"run_differential_per_game": -1.4026,
"avg_runs_scored": 4.3117,
"avg_runs_allowed": 5.7143,
"offense_index": 0.96,
"defense_index": 0.7859,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 6.1,
"run_differential": -28.0
},
"available": true,
"quality_score": -0.2951
},
"edges": {
"quality_edge": 0.3372,
"offense_edge": -0.0804,
"opponent_offense_edge": -0.04,
"defense_strength": 0.079,
"opponent_defense_weakness": 0.2141,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0175,
"run_prevention": 0.9688,
"strikeout": 1.0133
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "676440",
"profile": {
"available": true,
"pitcher_id": "676440",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 672.0,
"k_percent": 19.2,
"bb_percent": 7.4,
"woba": 0.307,
"xwoba": 0.318,
"sweet_spot_percent": 34.9,
"barrel_batted_rate": 8.3,
"hard_hit_percent": 39.2,
"avg_best_speed": 78.6766,
"avg_hyper_speed": 93.9127,
"whiff_percent": 23.8,
"swing_percent": 46.8
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.13,
"command_and_miss": -0.155,
"regression_edge": -0.3143,
"xwoba_edge": -0.1857,
"barrel_edge": -0.2222,
"hard_hit_edge": -0.1714,
"whiff_edge": -0.1714,
"bb_edge": 0.425,
"pitch_design_score": -0.1379
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "676440",
"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": 87.38900262856957,
"release_spin_rate": 2306.4645494421943,
"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": 87.38900262856957,
"release_spin_rate": 2306.4645494421943,
"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.389,
"release_spin_rate": 2306.4645,
"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.1379,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.985,
"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.1555,
"sample_weight": 1.0,
"run_prevention_factor": 1.0132,
"strikeout_factor": 0.9771,
"walk_factor": 0.966,
"homer_factor": 1.0302,
"woba_minus_xwoba": -0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "676440",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0132,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0132,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.966,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0302,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9771,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 2,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 19,
"Pitches": 79,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 5",
"detail": "Actual minus predicted earned runs was +5; this is the primary run-prevention error."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 10",
"detail": "Actual minus predicted hits was +10."
}
],
"provenance": {
"prediction": "output/games/20260919_OAK@CLE.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_PHI@NYM | away | Andrew Painter | Andrew Painter | True | 5.1 | 5.1 | 0 | 2 | 4 | 2 | 3/4 | 1/1 | 5/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.540462427745665,
"WHIP": 1.439306358381503,
"IP": 115.1,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 5.016,
"recent_avg_IP": 6.0,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1063,
"sample_weight": 1.0,
"run_prevention_factor": 1.009,
"strikeout_factor": 0.9834,
"walk_factor": 0.988,
"homer_factor": 1.0109,
"regression_flag": "neutral",
"k_percent": 19.7,
"bb_percent": 8.5,
"woba": 0.342,
"xwoba": 0.327,
"barrel_percent": 8.1,
"hard_hit_percent": 35.1,
"whiff_percent": 24.4
},
"espn_rank": {
"rank": 184,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "691725",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 10.0,
"R": 10.0,
"H": 25.0,
"BB": 9.0,
"SO": 29.0,
"HR": 2.0,
"BF": 124.0,
"Pitches": 475.0
},
"per_game": {
"IP": 6.0,
"ER": 2.0,
"R": 2.0,
"H": 5.0,
"BB": 1.8,
"SO": 5.8,
"HR": 0.4,
"BF": 24.8,
"Pitches": 95.0
},
"rates": {
"ERA": 3.0,
"WHIP": 1.1333,
"ER_per_IP": 0.33333,
"H_per_IP": 0.83333,
"BB_per_IP": 0.3,
"SO_per_IP": 0.96667,
"HR_per_IP": 0.06667
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.1,
"ER": 26.0,
"R": 26.0,
"H": 45.0,
"BB": 21.0,
"SO": 50.0,
"HR": 7.0,
"BF": 222.0,
"Pitches": 863.0
},
"per_game": {
"IP": 5.1,
"ER": 2.6,
"R": 2.6,
"H": 4.5,
"BB": 2.1,
"SO": 5.0,
"HR": 0.7,
"BF": 22.2,
"Pitches": 86.3
},
"rates": {
"ERA": 4.4713,
"WHIP": 1.2611,
"ER_per_IP": 0.49682,
"H_per_IP": 0.85987,
"BB_per_IP": 0.40127,
"SO_per_IP": 0.95541,
"HR_per_IP": 0.13376
}
},
"season": {
"games": 23,
"totals": {
"IP": 115.1,
"ER": 71.0,
"R": 71.0,
"H": 123.0,
"BB": 43.0,
"SO": 100.0,
"HR": 19.0,
"BF": 507.0,
"Pitches": 1948.0
},
"per_game": {
"IP": 5.0,
"ER": 3.087,
"R": 3.087,
"H": 5.3478,
"BB": 1.8696,
"SO": 4.3478,
"HR": 0.8261,
"BF": 22.0435,
"Pitches": 84.6957
},
"rates": {
"ERA": 5.5405,
"WHIP": 1.4393,
"ER_per_IP": 0.61561,
"H_per_IP": 1.06647,
"BB_per_IP": 0.37283,
"SO_per_IP": 0.86705,
"HR_per_IP": 0.16474
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.557,
"predicted_H": 5.056,
"predicted_BB": 1.98,
"predicted_SO": 5.259,
"predicted_HR": 0.651,
"predicted_ERA": 4.1216,
"predicted_WHIP": 1.26
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4255,
"form_weight": 0.5745,
"form_reliability": 0.8214,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.557,
"final": 2.32,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.056,
"final": 4.1813,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.98,
"final": 1.5631,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 5.259,
"final": 5.1488,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.651,
"final": 0.7995,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1216,
"final": 4.1216,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.26,
"final": 1.26,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 52.1,
"ER": 26,
"H": 45,
"BB": 21,
"SO": 50,
"HR": 7,
"ERA": 4.471337579617835,
"WHIP": 1.2611464968152868,
"K9": 8.598726114649683,
"HR9": 1.2038216560509556,
"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-13T00:00:00"
},
"recent_form_boost": 0.9994518113780372,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.1,
"predicted_ER": 2,
"predicted_H": 3,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "691725",
"player_name": "Andrew Painter",
"position": "Starter",
"team": "PHI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.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": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.1,
"delta": -0.5667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.1,
"delta": -0.5667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.1,
"after": 5.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.1,
"delta": -0.5667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.1,
"delta": -0.5667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PHI",
"games": 154,
"wins": 85,
"losses": 69,
"win_pct": 0.5519,
"runs_scored": 687.0,
"runs_allowed": 656.0,
"run_differential": 31.0,
"run_differential_per_game": 0.2013,
"avg_runs_scored": 4.461,
"avg_runs_allowed": 4.2597,
"offense_index": 0.9911,
"defense_index": 1.0566,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 4.9,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.0337
},
"opponent": {
"team": "NYM",
"games": 154,
"wins": 70,
"losses": 84,
"win_pct": 0.4545,
"runs_scored": 656.0,
"runs_allowed": 699.0,
"run_differential": -43.0,
"run_differential_per_game": -0.2792,
"avg_runs_scored": 4.2597,
"avg_runs_allowed": 4.539,
"offense_index": 0.9464,
"defense_index": 0.9916,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.1,
"avg_runs_allowed": 5.1,
"run_differential": 0.0
},
"available": true,
"quality_score": -0.1078
},
"edges": {
"quality_edge": 0.1415,
"offense_edge": -0.0089,
"opponent_offense_edge": -0.0536,
"defense_strength": 0.0566,
"opponent_defense_weakness": 0.0084,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0095,
"run_prevention": 0.9787,
"strikeout": 1.0085
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "691725",
"profile": {
"available": true,
"pitcher_id": "691725",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 479.0,
"k_percent": 19.7,
"bb_percent": 8.5,
"woba": 0.342,
"xwoba": 0.327,
"sweet_spot_percent": 29.5,
"barrel_batted_rate": 8.1,
"hard_hit_percent": 35.1,
"avg_best_speed": 76.0032,
"avg_hyper_speed": 93.6212,
"whiff_percent": 24.4,
"swing_percent": 49.3
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2006,
"command_and_miss": -0.1479,
"regression_edge": 0.4286,
"xwoba_edge": -0.4429,
"barrel_edge": -0.1778,
"hard_hit_edge": 0.4143,
"whiff_edge": -0.0857,
"bb_edge": 0.15,
"pitch_design_score": 0.021
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "691725",
"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": 90.22586081019104,
"release_spin_rate": 2309.8906226156996,
"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": 90.22586081019104,
"release_spin_rate": 2309.8906226156996,
"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.2259,
"release_spin_rate": 2309.8906,
"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.021,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.1497,
"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.1063,
"sample_weight": 1.0,
"run_prevention_factor": 1.009,
"strikeout_factor": 0.9834,
"walk_factor": 0.988,
"homer_factor": 1.0109,
"woba_minus_xwoba": 0.015,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "691725",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.009,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.009,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.988,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0109,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9834,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"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."
}
],
"provenance": {
"prediction": "output/games/20260919_PHI@NYM.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_PHI@NYM | home | Christian Scott | Christian Scott | True | 5.0 | 4.2 | -1 | 3 | 3 | 0 | 5/6 | 0/1 | 5/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.759493670886076,
"WHIP": 1.2626582278481013,
"IP": 105.1,
"games_started": null,
"games_pitched": 22,
"role_avg_IP": 4.788,
"recent_avg_IP": 5.4,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2937,
"sample_weight": 1.0,
"run_prevention_factor": 0.975,
"strikeout_factor": 1.044,
"walk_factor": 1.022,
"homer_factor": 0.9517,
"regression_flag": "neutral",
"k_percent": 28.0,
"bb_percent": 10.2,
"woba": 0.301,
"xwoba": 0.297,
"barrel_percent": 6.6,
"hard_hit_percent": 33.9,
"whiff_percent": 26.7
},
"espn_rank": {
"rank": 96,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 22.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8148,
"prior_weight": 0.1852
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "681035",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 22,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.0,
"ER": 14.0,
"R": 14.0,
"H": 18.0,
"BB": 13.0,
"SO": 29.0,
"HR": 5.0,
"BF": 113.0,
"Pitches": 442.0
},
"per_game": {
"IP": 5.1,
"ER": 2.8,
"R": 2.8,
"H": 3.6,
"BB": 2.6,
"SO": 5.8,
"HR": 1.0,
"BF": 22.6,
"Pitches": 88.4
},
"rates": {
"ERA": 4.6667,
"WHIP": 1.1481,
"ER_per_IP": 0.51852,
"H_per_IP": 0.66667,
"BB_per_IP": 0.48148,
"SO_per_IP": 1.07407,
"HR_per_IP": 0.18519
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.1,
"ER": 25.0,
"R": 25.0,
"H": 43.0,
"BB": 20.0,
"SO": 62.0,
"HR": 5.0,
"BF": 220.0,
"Pitches": 886.0
},
"per_game": {
"IP": 5.0,
"ER": 2.5,
"R": 2.5,
"H": 4.3,
"BB": 2.0,
"SO": 6.2,
"HR": 0.5,
"BF": 22.0,
"Pitches": 88.6
},
"rates": {
"ERA": 4.3831,
"WHIP": 1.2273,
"ER_per_IP": 0.48701,
"H_per_IP": 0.83766,
"BB_per_IP": 0.38961,
"SO_per_IP": 1.20779,
"HR_per_IP": 0.0974
}
},
"season": {
"games": 22,
"totals": {
"IP": 105.1,
"ER": 44.0,
"R": 45.0,
"H": 87.0,
"BB": 46.0,
"SO": 127.0,
"HR": 12.0,
"BF": 453.0,
"Pitches": 1885.0
},
"per_game": {
"IP": 4.2,
"ER": 2.0,
"R": 2.0455,
"H": 3.9545,
"BB": 2.0909,
"SO": 5.7727,
"HR": 0.5455,
"BF": 20.5909,
"Pitches": 85.6818
},
"rates": {
"ERA": 3.7595,
"WHIP": 1.2627,
"ER_per_IP": 0.41772,
"H_per_IP": 0.82595,
"BB_per_IP": 0.43671,
"SO_per_IP": 1.2057,
"HR_per_IP": 0.11392
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.489,
"predicted_H": 4.051,
"predicted_BB": 2.171,
"predicted_SO": 5.616,
"predicted_HR": 0.718,
"predicted_ERA": 4.4209,
"predicted_WHIP": 1.2278
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4282,
"form_weight": 0.5718,
"form_reliability": 0.8148,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 22.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8148,
"prior_weight": 0.1852
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.489,
"final": 2.7078,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.051,
"final": 4.4574,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.171,
"final": 1.2413,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 5.616,
"final": 5.3522,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.718,
"final": 0.8388,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4209,
"final": 4.4209,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2278,
"final": 1.2278,
"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": 25,
"H": 43,
"BB": 20,
"SO": 62,
"HR": 5,
"ERA": 4.383116883116884,
"WHIP": 1.2272727272727273,
"K9": 10.87012987012987,
"HR9": 0.8766233766233767,
"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-13T00:00:00"
},
"recent_form_boost": 0.9886801387831162,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_BB": 0.0,
"predicted_SO": 5.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 22.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8148,
"prior_weight": 0.1852
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "681035",
"player_name": "Christian Scott",
"position": "Starter",
"team": "NYM",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 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": 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.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYM",
"games": 154,
"wins": 70,
"losses": 84,
"win_pct": 0.4545,
"runs_scored": 656.0,
"runs_allowed": 699.0,
"run_differential": -43.0,
"run_differential_per_game": -0.2792,
"avg_runs_scored": 4.2597,
"avg_runs_allowed": 4.539,
"offense_index": 0.9464,
"defense_index": 0.9916,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.1,
"avg_runs_allowed": 5.1,
"run_differential": 0.0
},
"available": true,
"quality_score": -0.1078
},
"opponent": {
"team": "PHI",
"games": 154,
"wins": 85,
"losses": 69,
"win_pct": 0.5519,
"runs_scored": 687.0,
"runs_allowed": 656.0,
"run_differential": 31.0,
"run_differential_per_game": 0.2013,
"avg_runs_scored": 4.461,
"avg_runs_allowed": 4.2597,
"offense_index": 0.9911,
"defense_index": 1.0566,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.5,
"avg_runs_allowed": 4.9,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.0337
},
"edges": {
"quality_edge": -0.1415,
"offense_edge": -0.0536,
"opponent_offense_edge": -0.0089,
"defense_strength": -0.0084,
"opponent_defense_weakness": -0.0566,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9944,
"run_prevention": 1.0065,
"strikeout": 0.9965
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "681035",
"profile": {
"available": true,
"pitcher_id": "681035",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 431.0,
"k_percent": 28.0,
"bb_percent": 10.2,
"woba": 0.301,
"xwoba": 0.297,
"sweet_spot_percent": 37.6,
"barrel_batted_rate": 6.6,
"hard_hit_percent": 33.9,
"avg_best_speed": 75.2497,
"avg_hyper_speed": 93.017,
"whiff_percent": 26.7,
"swing_percent": 49.4
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3094,
"command_and_miss": 0.4157,
"regression_edge": 0.1143,
"xwoba_edge": 0.4143,
"barrel_edge": 0.1556,
"hard_hit_edge": 0.5857,
"whiff_edge": 0.2429,
"bb_edge": -0.275,
"pitch_design_score": 0.0107
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "681035",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 88,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 90.04250977863983,
"release_spin_rate": 2346.428940384509,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 90.04250977863983,
"release_spin_rate": 2346.428940384509,
"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.0425,
"release_spin_rate": 2346.4289,
"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.0107,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0764,
"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.2937,
"sample_weight": 1.0,
"run_prevention_factor": 0.975,
"strikeout_factor": 1.044,
"walk_factor": 1.022,
"homer_factor": 0.9517,
"woba_minus_xwoba": 0.004,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "681035",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.975,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.975,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.022,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9517,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.044,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 20,
"Pitches": 82,
"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/20260919_PHI@NYM.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_SEA@COL | away | Bryce Miller | Bryce Miller | True | 5.0 | 5.1 | 1 | 5 | 0 | -5 | 5/4 | 6/2 | 6/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.192546583850932,
"WHIP": 1.15527950310559,
"IP": 107.1,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 5.386,
"recent_avg_IP": 4.467,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2519,
"sample_weight": 1.0,
"run_prevention_factor": 0.9786,
"strikeout_factor": 1.016,
"walk_factor": 0.974,
"homer_factor": 0.9673,
"regression_flag": "neutral",
"k_percent": 24.3,
"bb_percent": 7.8,
"woba": 0.31,
"xwoba": 0.297,
"barrel_percent": 7.8,
"hard_hit_percent": 32.9,
"whiff_percent": 25.5
},
"espn_rank": {
"rank": 165,
"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": "682243",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.1,
"ER": 18.0,
"R": 19.0,
"H": 22.0,
"BB": 18.0,
"SO": 22.0,
"HR": 6.0,
"BF": 106.0,
"Pitches": 436.0
},
"per_game": {
"IP": 4.1,
"ER": 3.6,
"R": 3.8,
"H": 4.4,
"BB": 3.6,
"SO": 4.4,
"HR": 1.2,
"BF": 21.2,
"Pitches": 87.2
},
"rates": {
"ERA": 7.2537,
"WHIP": 1.791,
"ER_per_IP": 0.80597,
"H_per_IP": 0.98507,
"BB_per_IP": 0.80597,
"SO_per_IP": 0.98507,
"HR_per_IP": 0.26866
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.2,
"ER": 36.0,
"R": 38.0,
"H": 51.0,
"BB": 25.0,
"SO": 41.0,
"HR": 12.0,
"BF": 222.0,
"Pitches": 885.0
},
"per_game": {
"IP": 5.0,
"ER": 3.6,
"R": 3.8,
"H": 5.1,
"BB": 2.5,
"SO": 4.1,
"HR": 1.2,
"BF": 22.2,
"Pitches": 88.5
},
"rates": {
"ERA": 6.5235,
"WHIP": 1.5302,
"ER_per_IP": 0.72483,
"H_per_IP": 1.02685,
"BB_per_IP": 0.50336,
"SO_per_IP": 0.8255,
"HR_per_IP": 0.24161
}
},
"season": {
"games": 20,
"totals": {
"IP": 107.1,
"ER": 50.0,
"R": 54.0,
"H": 90.0,
"BB": 34.0,
"SO": 106.0,
"HR": 20.0,
"BF": 437.0,
"Pitches": 1704.0
},
"per_game": {
"IP": 5.1,
"ER": 2.5,
"R": 2.7,
"H": 4.5,
"BB": 1.7,
"SO": 5.3,
"HR": 1.0,
"BF": 21.85,
"Pitches": 85.2
},
"rates": {
"ERA": 4.1925,
"WHIP": 1.1553,
"ER_per_IP": 0.46584,
"H_per_IP": 0.83851,
"BB_per_IP": 0.31677,
"SO_per_IP": 0.98758,
"HR_per_IP": 0.18634
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 3.222,
"predicted_H": 4.68,
"predicted_BB": 2.681,
"predicted_SO": 4.481,
"predicted_HR": 1.077,
"predicted_ERA": 6.0236,
"predicted_WHIP": 1.5291
}
},
"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": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 3.222,
"final": 3.9945,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.68,
"final": 4.819,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 6.0,
"form": 2.681,
"final": 4.1231,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.481,
"final": 5.141,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 1.077,
"final": 1.478,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.0236,
"final": 6.0236,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5291,
"final": 1.5291,
"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": 36,
"H": 51,
"BB": 25,
"SO": 41,
"HR": 12,
"ERA": 6.523489932885906,
"WHIP": 1.5302013422818792,
"K9": 7.429530201342282,
"HR9": 2.174496644295302,
"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-13T00:00:00"
},
"recent_form_boost": 1.23704532225736,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_BB": 6.0,
"predicted_SO": 6.0,
"predicted_HR": 2.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": "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": 6.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_HR": 2.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": 6.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_R": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": "SEA",
"games": 154,
"wins": 72,
"losses": 82,
"win_pct": 0.4675,
"runs_scored": 629.0,
"runs_allowed": 684.0,
"run_differential": -55.0,
"run_differential_per_game": -0.3571,
"avg_runs_scored": 4.0844,
"avg_runs_allowed": 4.4416,
"offense_index": 0.9099,
"defense_index": 1.0107,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 6.0,
"avg_runs_allowed": 4.4,
"run_differential": 16.0
},
"available": true,
"quality_score": -0.0714
},
"opponent": {
"team": "COL",
"games": 154,
"wins": 56,
"losses": 98,
"win_pct": 0.3636,
"runs_scored": 721.0,
"runs_allowed": 899.0,
"run_differential": -178.0,
"run_differential_per_game": -1.1558,
"avg_runs_scored": 4.6818,
"avg_runs_allowed": 5.8377,
"offense_index": 1.0429,
"defense_index": 0.769,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 1,
"losses": 9,
"win_pct": 0.1,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 7.5,
"run_differential": -36.0
},
"available": true,
"quality_score": -0.3975
},
"edges": {
"quality_edge": 0.3261,
"offense_edge": -0.0901,
"opponent_offense_edge": 0.0429,
"defense_strength": 0.0107,
"opponent_defense_weakness": 0.231,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0116,
"run_prevention": 0.9895,
"strikeout": 1.0064
},
"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": 412.0,
"k_percent": 24.3,
"bb_percent": 7.8,
"woba": 0.31,
"xwoba": 0.297,
"sweet_spot_percent": 31.5,
"barrel_batted_rate": 7.8,
"hard_hit_percent": 32.9,
"avg_best_speed": 77.0106,
"avg_hyper_speed": 92.9924,
"whiff_percent": 25.5,
"swing_percent": 54.2
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.2672,
"command_and_miss": 0.2379,
"regression_edge": 0.3714,
"xwoba_edge": 0.4143,
"barrel_edge": -0.1111,
"hard_hit_edge": 0.7286,
"whiff_edge": 0.0714,
"bb_edge": 0.325,
"pitch_design_score": 0.0409
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "682243",
"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": 90.58215170763988,
"release_spin_rate": 2154.667278351319,
"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": 90.58215170763988,
"release_spin_rate": 2154.667278351319,
"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.5822,
"release_spin_rate": 2154.6673,
"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.0409,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.2923,
"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.2519,
"sample_weight": 1.0,
"run_prevention_factor": 0.9786,
"strikeout_factor": 1.016,
"walk_factor": 0.974,
"homer_factor": 0.9673,
"woba_minus_xwoba": 0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "682243",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9786,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9786,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 0.974,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9673,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.016,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 6,
"predicted_SO": 6,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 26,
"Pitches": 110,
"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": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -4."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
},
{
"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/20260919_SEA@COL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_SEA@COL | home | Jose Quintana | Jose Quintana | True | 4.1 | 4.0 | -1 | 5 | 3 | -2 | 6/5 | 2/1 | 3/2 | Last 10 before this game (9 available){
"model_context": {
"embedded_season": {
"ERA": 5.2682926829268295,
"WHIP": 1.5121951219512195,
"IP": 41.0,
"games_started": null,
"games_pitched": 9,
"role_avg_IP": 4.556,
"recent_avg_IP": 4.533,
"last_start_IP": 1.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3559,
"sample_weight": 0.676,
"run_prevention_factor": 1.0302,
"strikeout_factor": 0.9424,
"walk_factor": 1.0041,
"homer_factor": 1.0118,
"regression_flag": "neutral",
"k_percent": 11.0,
"bb_percent": 9.4,
"woba": 0.364,
"xwoba": 0.343,
"barrel_percent": 8.4,
"hard_hit_percent": 32.9,
"whiff_percent": 21.1
},
"espn_rank": {
"rank": 300,
"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.6164383561643836,
"last_10": 0.3835616438356164
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 9.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6429,
"prior_weight": 0.3571
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "500779",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 9,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.2,
"ER": 14.0,
"R": 15.0,
"H": 28.0,
"BB": 6.0,
"SO": 11.0,
"HR": 2.0,
"BF": 99.0,
"Pitches": 359.0
},
"per_game": {
"IP": 4.2,
"ER": 2.8,
"R": 3.0,
"H": 5.6,
"BB": 1.2,
"SO": 2.2,
"HR": 0.4,
"BF": 19.8,
"Pitches": 71.8
},
"rates": {
"ERA": 5.5588,
"WHIP": 1.5,
"ER_per_IP": 0.61765,
"H_per_IP": 1.23529,
"BB_per_IP": 0.26471,
"SO_per_IP": 0.48529,
"HR_per_IP": 0.08824
}
},
"last_10": {
"games": 9,
"totals": {
"IP": 41.0,
"ER": 24.0,
"R": 27.0,
"H": 45.0,
"BB": 17.0,
"SO": 20.0,
"HR": 6.0,
"BF": 181.0,
"Pitches": 687.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6667,
"R": 3.0,
"H": 5.0,
"BB": 1.8889,
"SO": 2.2222,
"HR": 0.6667,
"BF": 20.1111,
"Pitches": 76.3333
},
"rates": {
"ERA": 5.2683,
"WHIP": 1.5122,
"ER_per_IP": 0.58537,
"H_per_IP": 1.09756,
"BB_per_IP": 0.41463,
"SO_per_IP": 0.4878,
"HR_per_IP": 0.14634
}
},
"season": {
"games": 9,
"totals": {
"IP": 41.0,
"ER": 24.0,
"R": 27.0,
"H": 45.0,
"BB": 17.0,
"SO": 20.0,
"HR": 6.0,
"BF": 181.0,
"Pitches": 687.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6667,
"R": 3.0,
"H": 5.0,
"BB": 1.8889,
"SO": 2.2222,
"HR": 0.6667,
"BF": 20.1111,
"Pitches": 76.3333
},
"rates": {
"ERA": 5.2683,
"WHIP": 1.5122,
"ER_per_IP": 0.58537,
"H_per_IP": 1.09756,
"BB_per_IP": 0.41463,
"SO_per_IP": 0.4878,
"HR_per_IP": 0.14634
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.663,
"predicted_H": 5.18,
"predicted_BB": 1.593,
"predicted_SO": 3.019,
"predicted_HR": 0.579,
"predicted_ERA": 5.1357,
"predicted_WHIP": 1.4514
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5009,
"form_weight": 0.4991,
"form_reliability": 0.6429,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 9.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6429,
"prior_weight": 0.3571
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 2.663,
"final": 3.8335,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.18,
"final": 5.5907,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.593,
"final": 1.7969,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 3.019,
"final": 3.0095,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.579,
"final": 0.7899,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.1357,
"final": 5.1357,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4514,
"final": 1.4514,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 41.0,
"ER": 24,
"H": 45,
"BB": 17,
"SO": 20,
"HR": 6,
"ERA": 5.268292682926829,
"WHIP": 1.5121951219512193,
"K9": 4.390243902439024,
"HR9": 1.3170731707317072,
"games_pitched": 9,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 9,
"error_prone": false
},
"games_count": 9,
"latest_game_date": "2026-05-24T00:00:00"
},
"recent_form_boost": 1.0953854761286974,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_BB": 2.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 9.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6429,
"prior_weight": 0.3571
}
},
{
"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": 5,
"predicted_H": 6,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "500779",
"player_name": "Jose Quintana",
"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": 5.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_R": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.1,
"after": 4.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "COL",
"games": 154,
"wins": 56,
"losses": 98,
"win_pct": 0.3636,
"runs_scored": 721.0,
"runs_allowed": 899.0,
"run_differential": -178.0,
"run_differential_per_game": -1.1558,
"avg_runs_scored": 4.6818,
"avg_runs_allowed": 5.8377,
"offense_index": 1.0429,
"defense_index": 0.769,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 1,
"losses": 9,
"win_pct": 0.1,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 7.5,
"run_differential": -36.0
},
"available": true,
"quality_score": -0.3975
},
"opponent": {
"team": "SEA",
"games": 154,
"wins": 72,
"losses": 82,
"win_pct": 0.4675,
"runs_scored": 629.0,
"runs_allowed": 684.0,
"run_differential": -55.0,
"run_differential_per_game": -0.3571,
"avg_runs_scored": 4.0844,
"avg_runs_allowed": 4.4416,
"offense_index": 0.9099,
"defense_index": 1.0107,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 6.0,
"avg_runs_allowed": 4.4,
"run_differential": 16.0
},
"available": true,
"quality_score": -0.0714
},
"edges": {
"quality_edge": -0.3261,
"offense_edge": 0.0429,
"opponent_offense_edge": -0.0901,
"defense_strength": -0.231,
"opponent_defense_weakness": -0.0107,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9836,
"run_prevention": 1.025,
"strikeout": 0.9974
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "500779",
"profile": {
"available": true,
"pitcher_id": "500779",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 169.0,
"k_percent": 11.0,
"bb_percent": 9.4,
"woba": 0.364,
"xwoba": 0.343,
"sweet_spot_percent": 35.0,
"barrel_batted_rate": 8.4,
"hard_hit_percent": 32.9,
"avg_best_speed": 78.1486,
"avg_hyper_speed": 93.1591,
"whiff_percent": 21.1,
"swing_percent": 47.0
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.5888,
"command_and_miss": -0.9171,
"regression_edge": 0.6,
"xwoba_edge": -0.9,
"barrel_edge": -0.2444,
"hard_hit_edge": 0.7286,
"whiff_edge": -0.5571,
"bb_edge": -0.075,
"pitch_design_score": -0.2284
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "500779",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 82,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 82,
"pitch_usage": 0.0,
"release_speed": 85.77334602720302,
"release_spin_rate": 2007.1807952255701,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 82,
"pitch_usage": 0.0,
"release_speed": 85.77334602720302,
"release_spin_rate": 2007.1807952255701,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 85.7733,
"release_spin_rate": 2007.1808,
"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.2284,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.6313,
"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.3559,
"sample_weight": 0.676,
"run_prevention_factor": 1.0302,
"strikeout_factor": 0.9424,
"walk_factor": 1.0041,
"homer_factor": 1.0118,
"woba_minus_xwoba": 0.021,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "500779",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0204,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0204,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0028,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.008,
"adjusted": 1
},
"predicted_SO": {
"original": 2.0,
"factor": 0.9611,
"adjusted": 2
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 6,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"Pitches": 93,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 9 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260919_SEA@COL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_SF@LAD | away | Yunior Marte | Yunior Marte | True | 5.0 | 4.2 | -1 | 5 | 6 | 1 | 6/8 | 2/3 | 3/2 | Last 10 before this game (3 available){
"model_context": {
"embedded_season": {
"ERA": 2.4545454545454546,
"WHIP": 1.090909090909091,
"IP": 14.2,
"games_started": null,
"games_pitched": 3,
"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.0152,
"sample_weight": 0.45,
"run_prevention_factor": 1.0013,
"strikeout_factor": 0.974,
"walk_factor": 1.0099,
"homer_factor": 1.0139,
"regression_flag": "neutral",
"k_percent": 15.3,
"bb_percent": 10.2,
"woba": 0.286,
"xwoba": 0.291,
"barrel_percent": 9.1,
"hard_hit_percent": 40.9,
"whiff_percent": 21.6
},
"espn_rank": {
"rank": 704,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.375,
"prior_weight": 0.625
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "805074",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 3,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 3,
"totals": {
"IP": 14.2,
"ER": 4.0,
"R": 4.0,
"H": 10.0,
"BB": 6.0,
"SO": 9.0,
"HR": 2.0,
"BF": 59.0,
"Pitches": 215.0
},
"per_game": {
"IP": 5.0,
"ER": 1.3333,
"R": 1.3333,
"H": 3.3333,
"BB": 2.0,
"SO": 3.0,
"HR": 0.6667,
"BF": 19.6667,
"Pitches": 71.6667
},
"rates": {
"ERA": 2.4545,
"WHIP": 1.0909,
"ER_per_IP": 0.27273,
"H_per_IP": 0.68182,
"BB_per_IP": 0.40909,
"SO_per_IP": 0.61364,
"HR_per_IP": 0.13636
}
},
"last_10": {
"games": 3,
"totals": {
"IP": 14.2,
"ER": 4.0,
"R": 4.0,
"H": 10.0,
"BB": 6.0,
"SO": 9.0,
"HR": 2.0,
"BF": 59.0,
"Pitches": 215.0
},
"per_game": {
"IP": 5.0,
"ER": 1.3333,
"R": 1.3333,
"H": 3.3333,
"BB": 2.0,
"SO": 3.0,
"HR": 0.6667,
"BF": 19.6667,
"Pitches": 71.6667
},
"rates": {
"ERA": 2.4545,
"WHIP": 1.0909,
"ER_per_IP": 0.27273,
"H_per_IP": 0.68182,
"BB_per_IP": 0.40909,
"SO_per_IP": 0.61364,
"HR_per_IP": 0.13636
}
},
"season": {
"games": 3,
"totals": {
"IP": 14.2,
"ER": 4.0,
"R": 4.0,
"H": 10.0,
"BB": 6.0,
"SO": 9.0,
"HR": 2.0,
"BF": 59.0,
"Pitches": 215.0
},
"per_game": {
"IP": 5.0,
"ER": 1.3333,
"R": 1.3333,
"H": 3.3333,
"BB": 2.0,
"SO": 3.0,
"HR": 0.6667,
"BF": 19.6667,
"Pitches": 71.6667
},
"rates": {
"ERA": 2.4545,
"WHIP": 1.0909,
"ER_per_IP": 0.27273,
"H_per_IP": 0.68182,
"BB_per_IP": 0.40909,
"SO_per_IP": 0.61364,
"HR_per_IP": 0.13636
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.1,
"predicted_H": 4.34,
"predicted_BB": 1.942,
"predicted_SO": 4.077,
"predicted_HR": 0.719,
"predicted_ERA": 3.7796,
"predicted_WHIP": 1.2562
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.6141,
"form_weight": 0.3859,
"form_reliability": 0.375,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.375,
"prior_weight": 0.625
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 6.0,
"form": 2.1,
"final": 4.4948,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.34,
"final": 5.3593,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.942,
"final": 1.9776,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.077,
"final": 2.8016,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.719,
"final": 0.8916,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.7796,
"final": 3.7796,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2562,
"final": 1.2562,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 14.2,
"ER": 4,
"H": 10,
"BB": 6,
"SO": 9,
"HR": 2,
"ERA": 2.454545454545454,
"WHIP": 1.0909090909090908,
"K9": 5.5227272727272725,
"HR9": 1.227272727272727,
"games_pitched": 3,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 3,
"error_prone": false
},
"games_count": 3,
"latest_game_date": "2026-09-11T00:00:00"
},
"recent_form_boost": 0.8876902999934493,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 6.0,
"predicted_H": 6.0,
"predicted_BB": 2.0,
"predicted_SO": 2.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 3.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.375,
"prior_weight": 0.625
}
}
],
"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": 2.0,
"predicted_ER": 6.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 6.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 6.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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SF",
"games": 154,
"wins": 64,
"losses": 90,
"win_pct": 0.4156,
"runs_scored": 651.0,
"runs_allowed": 727.0,
"run_differential": -76.0,
"run_differential_per_game": -0.4935,
"avg_runs_scored": 4.2273,
"avg_runs_allowed": 4.7208,
"offense_index": 0.9408,
"defense_index": 0.9518,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.9,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.1321
},
"opponent": {
"team": "LAD",
"games": 154,
"wins": 94,
"losses": 60,
"win_pct": 0.6104,
"runs_scored": 767.0,
"runs_allowed": 582.0,
"run_differential": 185.0,
"run_differential_per_game": 1.2013,
"avg_runs_scored": 4.9805,
"avg_runs_allowed": 3.7792,
"offense_index": 1.1084,
"defense_index": 1.189,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 2.6,
"run_differential": 30.0
},
"available": true,
"quality_score": 0.3109
},
"edges": {
"quality_edge": -0.443,
"offense_edge": -0.0592,
"opponent_offense_edge": 0.1084,
"defense_strength": -0.0482,
"opponent_defense_weakness": -0.189,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9765,
"run_prevention": 1.0443,
"strikeout": 0.978
},
"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": 39.0,
"k_percent": 15.3,
"bb_percent": 10.2,
"woba": 0.286,
"xwoba": 0.291,
"sweet_spot_percent": 29.5,
"barrel_batted_rate": 9.1,
"hard_hit_percent": 40.9,
"avg_best_speed": 79.442,
"avg_hyper_speed": 94.6855,
"whiff_percent": 21.6,
"swing_percent": 45.1
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.2797,
"command_and_miss": -0.6557,
"regression_edge": -0.1429,
"xwoba_edge": 0.5857,
"barrel_edge": -0.4,
"hard_hit_edge": -0.4143,
"whiff_edge": -0.4857,
"bb_edge": -0.275,
"pitch_design_score": -0.0692
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "805074",
"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": 88.6157894736842,
"release_spin_rate": 1846.7786502546687,
"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": 88.6157894736842,
"release_spin_rate": 1846.7786502546687,
"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.6158,
"release_spin_rate": 1846.7787,
"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.0692,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4943,
"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.0152,
"sample_weight": 0.45,
"run_prevention_factor": 1.0013,
"strikeout_factor": 0.974,
"walk_factor": 1.0099,
"homer_factor": 1.0139,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "805074",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 1.0006,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 1.0006,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0045,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0063,
"adjusted": 0
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9883,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 6,
"predicted_R": 6,
"predicted_ER": 6,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 97,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 3 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
}
],
"provenance": {
"prediction": "output/games/20260919_SF@LAD.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_SF@LAD | home | Tarik Skubal | Tarik Skubal | True | 6.1 | 5.0 | -4 | 0 | 4 | 4 | 0/8 | 2/2 | 7/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.7,
"WHIP": 0.9545454545454546,
"IP": 146.2,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 6.111,
"recent_avg_IP": 6.6,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.7489,
"sample_weight": 1.0,
"run_prevention_factor": 0.9363,
"strikeout_factor": 1.0829,
"walk_factor": 0.906,
"homer_factor": 0.9404,
"regression_flag": "neutral",
"k_percent": 30.2,
"bb_percent": 4.4,
"woba": 0.262,
"xwoba": 0.267,
"barrel_percent": 6.8,
"hard_hit_percent": 35.8,
"whiff_percent": 31.3
},
"espn_rank": {
"rank": 12,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669373",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 33.0,
"ER": 8.0,
"R": 8.0,
"H": 26.0,
"BB": 5.0,
"SO": 38.0,
"HR": 1.0,
"BF": 126.0,
"Pitches": 475.0
},
"per_game": {
"IP": 6.2,
"ER": 1.6,
"R": 1.6,
"H": 5.2,
"BB": 1.0,
"SO": 7.6,
"HR": 0.2,
"BF": 25.2,
"Pitches": 95.0
},
"rates": {
"ERA": 2.1818,
"WHIP": 0.9394,
"ER_per_IP": 0.24242,
"H_per_IP": 0.78788,
"BB_per_IP": 0.15152,
"SO_per_IP": 1.15152,
"HR_per_IP": 0.0303
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 64.0,
"ER": 18.0,
"R": 19.0,
"H": 49.0,
"BB": 14.0,
"SO": 75.0,
"HR": 3.0,
"BF": 251.0,
"Pitches": 947.0
},
"per_game": {
"IP": 6.1,
"ER": 1.8,
"R": 1.9,
"H": 4.9,
"BB": 1.4,
"SO": 7.5,
"HR": 0.3,
"BF": 25.1,
"Pitches": 94.7
},
"rates": {
"ERA": 2.5312,
"WHIP": 0.9844,
"ER_per_IP": 0.28125,
"H_per_IP": 0.76562,
"BB_per_IP": 0.21875,
"SO_per_IP": 1.17188,
"HR_per_IP": 0.04688
}
},
"season": {
"games": 24,
"totals": {
"IP": 146.2,
"ER": 44.0,
"R": 48.0,
"H": 115.0,
"BB": 25.0,
"SO": 173.0,
"HR": 13.0,
"BF": 572.0,
"Pitches": 2195.0
},
"per_game": {
"IP": 6.0,
"ER": 1.8333,
"R": 2.0,
"H": 4.7917,
"BB": 1.0417,
"SO": 7.2083,
"HR": 0.5417,
"BF": 23.8333,
"Pitches": 91.4583
},
"rates": {
"ERA": 2.7,
"WHIP": 0.9545,
"ER_per_IP": 0.3,
"H_per_IP": 0.78409,
"BB_per_IP": 0.17045,
"SO_per_IP": 1.17955,
"HR_per_IP": 0.08864
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 1.979,
"predicted_H": 5.211,
"predicted_BB": 1.362,
"predicted_SO": 7.202,
"predicted_HR": 0.417,
"predicted_ERA": 2.7813,
"predicted_WHIP": 1.0267
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4228,
"form_weight": 0.5772,
"form_reliability": 0.8276,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
},
"applied_metrics": {
"predicted_IP": {
"model": 6.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 0.0,
"form": 1.979,
"final": 1.1422,
"source": "model_form_blend"
},
"predicted_H": {
"model": 0.0,
"form": 5.211,
"final": 3.0076,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.362,
"final": 1.6318,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 7.202,
"final": 7.1166,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.417,
"final": 0.2407,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.7813,
"final": 2.7813,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0267,
"final": 1.0267,
"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.0,
"ER": 18,
"H": 49,
"BB": 14,
"SO": 75,
"HR": 3,
"ERA": 2.53125,
"WHIP": 0.984375,
"K9": 10.546875,
"HR9": 0.421875,
"games_pitched": 10,
"quality_starts": 8,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-14T00:00:00"
},
"recent_form_boost": 0.7742726712506486,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_BB": 2.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
}
},
{
"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": 0,
"predicted_H": 0,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669373",
"player_name": "Tarik Skubal",
"position": "Starter",
"team": "LAD",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_HR": 0.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": 2.0,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"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": 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": 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
}
},
"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": 0.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_R": 0.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": 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": 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": 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": 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": 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": 154,
"wins": 94,
"losses": 60,
"win_pct": 0.6104,
"runs_scored": 767.0,
"runs_allowed": 582.0,
"run_differential": 185.0,
"run_differential_per_game": 1.2013,
"avg_runs_scored": 4.9805,
"avg_runs_allowed": 3.7792,
"offense_index": 1.1084,
"defense_index": 1.189,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 2.6,
"run_differential": 30.0
},
"available": true,
"quality_score": 0.3109
},
"opponent": {
"team": "SF",
"games": 154,
"wins": 64,
"losses": 90,
"win_pct": 0.4156,
"runs_scored": 651.0,
"runs_allowed": 727.0,
"run_differential": -76.0,
"run_differential_per_game": -0.4935,
"avg_runs_scored": 4.2273,
"avg_runs_allowed": 4.7208,
"offense_index": 0.9408,
"defense_index": 0.9518,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.9,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.1321
},
"edges": {
"quality_edge": 0.443,
"offense_edge": 0.1084,
"opponent_offense_edge": -0.0592,
"defense_strength": 0.189,
"opponent_defense_weakness": 0.0482,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0258,
"run_prevention": 0.9495,
"strikeout": 1.018
},
"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": 545.0,
"k_percent": 30.2,
"bb_percent": 4.4,
"woba": 0.262,
"xwoba": 0.267,
"sweet_spot_percent": 34.1,
"barrel_batted_rate": 6.8,
"hard_hit_percent": 35.8,
"avg_best_speed": 75.3985,
"avg_hyper_speed": 93.5206,
"whiff_percent": 31.3,
"swing_percent": 53.3
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.8407,
"command_and_miss": 1.0771,
"regression_edge": -0.1429,
"xwoba_edge": 1.2714,
"barrel_edge": 0.1111,
"hard_hit_edge": 0.3143,
"whiff_edge": 0.9,
"bb_edge": 1.175,
"pitch_design_score": 0.1534
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669373",
"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.59144562340002,
"release_spin_rate": 2171.5084296609316,
"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.59144562340002,
"release_spin_rate": 2171.5084296609316,
"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.5914,
"release_spin_rate": 2171.5084,
"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.1534,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.096,
"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.7489,
"sample_weight": 1.0,
"run_prevention_factor": 0.9363,
"strikeout_factor": 1.0829,
"walk_factor": 0.906,
"homer_factor": 0.9404,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669373",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9363,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9363,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.906,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9404,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0829,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 0,
"predicted_R": 0,
"predicted_ER": 0,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 96,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 4",
"detail": "Actual minus predicted earned runs was +4; this is the primary run-prevention error."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 8",
"detail": "Actual minus predicted hits was +8."
},
{
"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/20260919_SF@LAD.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_TOR@TEX | away | José Soriano | José Soriano | True | 6.0 | 5.0 | -3 | 4 | 5 | 1 | 7/4 | 2/1 | 5/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.561023622047244,
"WHIP": 1.2696850393700787,
"IP": 169.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.644,
"recent_avg_IP": 6.0,
"last_start_IP": 6.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0003,
"sample_weight": 1.0,
"run_prevention_factor": 1.0,
"strikeout_factor": 1.024,
"walk_factor": 1.022,
"homer_factor": 1.0033,
"regression_flag": "neutral",
"k_percent": 22.5,
"bb_percent": 10.2,
"woba": 0.295,
"xwoba": 0.322,
"barrel_percent": 7.3,
"hard_hit_percent": 37.0,
"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": 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": "667755",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 17.0,
"R": 17.0,
"H": 29.0,
"BB": 10.0,
"SO": 23.0,
"HR": 3.0,
"BF": 128.0,
"Pitches": 471.0
},
"per_game": {
"IP": 6.0,
"ER": 3.4,
"R": 3.4,
"H": 5.8,
"BB": 2.0,
"SO": 4.6,
"HR": 0.6,
"BF": 25.6,
"Pitches": 94.2
},
"rates": {
"ERA": 5.1,
"WHIP": 1.3,
"ER_per_IP": 0.56667,
"H_per_IP": 0.96667,
"BB_per_IP": 0.33333,
"SO_per_IP": 0.76667,
"HR_per_IP": 0.1
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 58.1,
"ER": 24.0,
"R": 26.0,
"H": 53.0,
"BB": 19.0,
"SO": 44.0,
"HR": 4.0,
"BF": 240.0,
"Pitches": 926.0
},
"per_game": {
"IP": 6.0,
"ER": 2.4,
"R": 2.6,
"H": 5.3,
"BB": 1.9,
"SO": 4.4,
"HR": 0.4,
"BF": 24.0,
"Pitches": 92.6
},
"rates": {
"ERA": 3.7029,
"WHIP": 1.2343,
"ER_per_IP": 0.41143,
"H_per_IP": 0.90857,
"BB_per_IP": 0.32571,
"SO_per_IP": 0.75429,
"HR_per_IP": 0.06857
}
},
"season": {
"games": 30,
"totals": {
"IP": 169.1,
"ER": 67.0,
"R": 72.0,
"H": 143.0,
"BB": 72.0,
"SO": 159.0,
"HR": 16.0,
"BF": 706.0,
"Pitches": 2788.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2333,
"R": 2.4,
"H": 4.7667,
"BB": 2.4,
"SO": 5.3,
"HR": 0.5333,
"BF": 23.5333,
"Pitches": 92.9333
},
"rates": {
"ERA": 3.561,
"WHIP": 1.2697,
"ER_per_IP": 0.39567,
"H_per_IP": 0.84449,
"BB_per_IP": 0.4252,
"SO_per_IP": 0.93898,
"HR_per_IP": 0.09449
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.867,
"predicted_H": 5.528,
"predicted_BB": 2.097,
"predicted_SO": 4.854,
"predicted_HR": 0.574,
"predicted_ERA": 4.342,
"predicted_WHIP": 1.283
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.867,
"final": 3.332,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 5.528,
"final": 6.1321,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.097,
"final": 2.0572,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.854,
"final": 4.9139,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.574,
"final": 0.7488,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.342,
"final": 4.342,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.283,
"final": 1.283,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 58.1,
"ER": 24,
"H": 53,
"BB": 19,
"SO": 44,
"HR": 4,
"ERA": 3.702857142857143,
"WHIP": 1.2342857142857142,
"K9": 6.788571428571428,
"HR9": 0.6171428571428571,
"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-14T00:00:00"
},
"recent_form_boost": 0.91232624267922,
"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": 7.0,
"predicted_BB": 2.0,
"predicted_SO": 5.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": "667755",
"player_name": "Jos\u00e9 Soriano",
"position": "Starter",
"team": "TOR",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 4.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 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": "TOR",
"games": 154,
"wins": 76,
"losses": 78,
"win_pct": 0.4935,
"runs_scored": 620.0,
"runs_allowed": 663.0,
"run_differential": -43.0,
"run_differential_per_game": -0.2792,
"avg_runs_scored": 4.026,
"avg_runs_allowed": 4.3052,
"offense_index": 0.8973,
"defense_index": 1.0422,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.5,
"run_differential": -5.0
},
"available": true,
"quality_score": -0.0747
},
"opponent": {
"team": "TEX",
"games": 154,
"wins": 77,
"losses": 77,
"win_pct": 0.5,
"runs_scored": 645.0,
"runs_allowed": 678.0,
"run_differential": -33.0,
"run_differential_per_game": -0.2143,
"avg_runs_scored": 4.1883,
"avg_runs_allowed": 4.4026,
"offense_index": 0.9334,
"defense_index": 1.0192,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 3.9,
"run_differential": 11.0
},
"available": true,
"quality_score": 0.0087
},
"edges": {
"quality_edge": -0.0834,
"offense_edge": -0.1027,
"opponent_offense_edge": -0.0666,
"defense_strength": 0.0422,
"opponent_defense_weakness": -0.0192,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 1.0006,
"run_prevention": 0.9893,
"strikeout": 1.0028
},
"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": 675.0,
"k_percent": 22.5,
"bb_percent": 10.2,
"woba": 0.295,
"xwoba": 0.322,
"sweet_spot_percent": 30.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 37.0,
"avg_best_speed": 77.0069,
"avg_hyper_speed": 93.9255,
"whiff_percent": 28.7,
"swing_percent": 46.6
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.041,
"command_and_miss": 0.1621,
"regression_edge": -0.7714,
"xwoba_edge": -0.3,
"barrel_edge": 0.0,
"hard_hit_edge": 0.1429,
"whiff_edge": 0.5286,
"bb_edge": -0.275,
"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.61843785982516,
"release_spin_rate": 2057.023111038004,
"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.61843785982516,
"release_spin_rate": 2057.023111038004,
"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.6184,
"release_spin_rate": 2057.0231,
"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.1068,
"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.0003,
"sample_weight": 1.0,
"run_prevention_factor": 1.0,
"strikeout_factor": 1.024,
"walk_factor": 1.022,
"homer_factor": 1.0033,
"woba_minus_xwoba": -0.027,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "667755",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.022,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0033,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.024,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 7,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 27,
"Pitches": 109,
"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/20260919_TOR@TEX.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_TOR@TEX | home | Cal Quantrill | Cal Quantrill | True | 6.0 | 1.1 | -14 | 1 | 0 | -1 | 1/0 | 0/0 | 9/0 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.8987730061349692,
"WHIP": 1.049079754601227,
"IP": 108.2,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.381,
"recent_avg_IP": 6.2,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0343,
"sample_weight": 1.0,
"run_prevention_factor": 1.0029,
"strikeout_factor": 0.9491,
"walk_factor": 0.932,
"homer_factor": 0.9893,
"regression_flag": "neutral",
"k_percent": 18.5,
"bb_percent": 5.7,
"woba": 0.277,
"xwoba": 0.305,
"barrel_percent": 7.4,
"hard_hit_percent": 36.8,
"whiff_percent": 19.6
},
"espn_rank": {
"rank": 90,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "615698",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.0,
"ER": 8.0,
"R": 8.0,
"H": 22.0,
"BB": 3.0,
"SO": 27.0,
"HR": 4.0,
"BF": 116.0,
"Pitches": 442.0
},
"per_game": {
"IP": 6.1,
"ER": 1.6,
"R": 1.6,
"H": 4.4,
"BB": 0.6,
"SO": 5.4,
"HR": 0.8,
"BF": 23.2,
"Pitches": 88.4
},
"rates": {
"ERA": 2.3226,
"WHIP": 0.8065,
"ER_per_IP": 0.25806,
"H_per_IP": 0.70968,
"BB_per_IP": 0.09677,
"SO_per_IP": 0.87097,
"HR_per_IP": 0.12903
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.1,
"ER": 11.0,
"R": 13.0,
"H": 36.0,
"BB": 8.0,
"SO": 49.0,
"HR": 5.0,
"BF": 209.0,
"Pitches": 784.0
},
"per_game": {
"IP": 5.2,
"ER": 1.1,
"R": 1.3,
"H": 3.6,
"BB": 0.8,
"SO": 4.9,
"HR": 0.5,
"BF": 20.9,
"Pitches": 78.4
},
"rates": {
"ERA": 1.7892,
"WHIP": 0.7952,
"ER_per_IP": 0.1988,
"H_per_IP": 0.6506,
"BB_per_IP": 0.14458,
"SO_per_IP": 0.88554,
"HR_per_IP": 0.09036
}
},
"season": {
"games": 31,
"totals": {
"IP": 108.2,
"ER": 35.0,
"R": 41.0,
"H": 89.0,
"BB": 25.0,
"SO": 81.0,
"HR": 13.0,
"BF": 439.0,
"Pitches": 1657.0
},
"per_game": {
"IP": 3.2,
"ER": 1.129,
"R": 1.3226,
"H": 2.871,
"BB": 0.8065,
"SO": 2.6129,
"HR": 0.4194,
"BF": 14.1613,
"Pitches": 53.4516
},
"rates": {
"ERA": 2.8988,
"WHIP": 1.0491,
"ER_per_IP": 0.32209,
"H_per_IP": 0.81902,
"BB_per_IP": 0.23006,
"SO_per_IP": 0.7454,
"HR_per_IP": 0.11963
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 1.609,
"predicted_H": 4.21,
"predicted_BB": 0.973,
"predicted_SO": 4.855,
"predicted_HR": 0.666,
"predicted_ERA": 2.5739,
"predicted_WHIP": 0.9211
}
},
"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": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.609,
"final": 1.3601,
"source": "model_form_blend"
},
"predicted_H": {
"model": 0.0,
"form": 4.21,
"final": 2.4894,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 0.973,
"final": 0.5753,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 9.0,
"form": 4.855,
"final": 6.549,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.666,
"final": 0.3938,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.5739,
"final": 2.5739,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.9211,
"final": 0.9211,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.1,
"ER": 11,
"H": 36,
"BB": 8,
"SO": 49,
"HR": 5,
"ERA": 1.789156626506024,
"WHIP": 0.7951807228915663,
"K9": 7.969879518072289,
"HR9": 0.8132530120481928,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": true,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-13T00:00:00"
},
"recent_form_boost": 0.6868237643099643,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 1.0,
"predicted_H": 0.0,
"predicted_BB": 0.0,
"predicted_SO": 9.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": 1,
"predicted_H": 0,
"predicted_BB": 0,
"predicted_SO": 9,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "615698",
"player_name": "Cal Quantrill",
"position": "Starter",
"team": "TEX",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 9.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 9.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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 1.0,
"predicted_SO": 9.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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TEX",
"games": 154,
"wins": 77,
"losses": 77,
"win_pct": 0.5,
"runs_scored": 645.0,
"runs_allowed": 678.0,
"run_differential": -33.0,
"run_differential_per_game": -0.2143,
"avg_runs_scored": 4.1883,
"avg_runs_allowed": 4.4026,
"offense_index": 0.9334,
"defense_index": 1.0192,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 3.9,
"run_differential": 11.0
},
"available": true,
"quality_score": 0.0087
},
"opponent": {
"team": "TOR",
"games": 154,
"wins": 76,
"losses": 78,
"win_pct": 0.4935,
"runs_scored": 620.0,
"runs_allowed": 663.0,
"run_differential": -43.0,
"run_differential_per_game": -0.2792,
"avg_runs_scored": 4.026,
"avg_runs_allowed": 4.3052,
"offense_index": 0.8973,
"defense_index": 1.0422,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.5,
"run_differential": -5.0
},
"available": true,
"quality_score": -0.0747
},
"edges": {
"quality_edge": 0.0834,
"offense_edge": -0.0666,
"opponent_offense_edge": -0.1027,
"defense_strength": 0.0192,
"opponent_defense_weakness": -0.0422,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.008,
"run_prevention": 0.9775,
"strikeout": 1.0107
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "615698",
"profile": {
"available": true,
"pitcher_id": "615698",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 403.0,
"k_percent": 18.5,
"bb_percent": 5.7,
"woba": 0.277,
"xwoba": 0.305,
"sweet_spot_percent": 33.4,
"barrel_batted_rate": 7.4,
"hard_hit_percent": 36.8,
"avg_best_speed": 78.7637,
"avg_hyper_speed": 93.7804,
"whiff_percent": 19.6,
"swing_percent": 48.0
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.2326,
"command_and_miss": -0.325,
"regression_edge": -0.8,
"xwoba_edge": 0.1857,
"barrel_edge": -0.0222,
"hard_hit_edge": 0.1714,
"whiff_edge": -0.7714,
"bb_edge": 0.85,
"pitch_design_score": -0.0009
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "615698",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 92,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 89.83598532992958,
"release_spin_rate": 1945.7490775349906,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 89.83598532992958,
"release_spin_rate": 1945.7490775349906,
"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.836,
"release_spin_rate": 1945.7491,
"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.0009,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0062,
"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.0343,
"sample_weight": 1.0,
"run_prevention_factor": 1.0029,
"strikeout_factor": 0.9491,
"walk_factor": 0.932,
"homer_factor": 0.9893,
"woba_minus_xwoba": -0.028,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "615698",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0029,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0029,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.932,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9893,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9491,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 0,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 9,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 18,
"Pitches": 88,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -14 outs from the projected workload."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260919_TOR@TEX.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_WAS@STL | away | Andrew Alvarez | Andrew Alvarez | True | 5.2 | 6.0 | 1 | 1 | 0 | -1 | 3/5 | 1/1 | 5/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.3529411764705883,
"WHIP": 1.2745098039215685,
"IP": 102.0,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 5.022,
"recent_avg_IP": 5.4,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.004,
"sample_weight": 1.0,
"run_prevention_factor": 1.0003,
"strikeout_factor": 1.0109,
"walk_factor": 1.038,
"homer_factor": 0.9824,
"regression_flag": "neutral",
"k_percent": 23.2,
"bb_percent": 11.0,
"woba": 0.291,
"xwoba": 0.315,
"barrel_percent": 5.4,
"hard_hit_percent": 40.3,
"whiff_percent": 25.7
},
"espn_rank": {
"rank": 59,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "674841",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.0,
"ER": 7.0,
"R": 7.0,
"H": 16.0,
"BB": 14.0,
"SO": 30.0,
"HR": 2.0,
"BF": 110.0,
"Pitches": 428.0
},
"per_game": {
"IP": 5.1,
"ER": 1.4,
"R": 1.4,
"H": 3.2,
"BB": 2.8,
"SO": 6.0,
"HR": 0.4,
"BF": 22.0,
"Pitches": 85.6
},
"rates": {
"ERA": 2.3333,
"WHIP": 1.1111,
"ER_per_IP": 0.25926,
"H_per_IP": 0.59259,
"BB_per_IP": 0.51852,
"SO_per_IP": 1.11111,
"HR_per_IP": 0.07407
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.0,
"ER": 16.0,
"R": 16.0,
"H": 34.0,
"BB": 25.0,
"SO": 46.0,
"HR": 3.0,
"BF": 215.0,
"Pitches": 809.0
},
"per_game": {
"IP": 5.1,
"ER": 1.6,
"R": 1.6,
"H": 3.4,
"BB": 2.5,
"SO": 4.6,
"HR": 0.3,
"BF": 21.5,
"Pitches": 80.9
},
"rates": {
"ERA": 2.717,
"WHIP": 1.1132,
"ER_per_IP": 0.30189,
"H_per_IP": 0.64151,
"BB_per_IP": 0.4717,
"SO_per_IP": 0.86792,
"HR_per_IP": 0.0566
}
},
"season": {
"games": 23,
"totals": {
"IP": 102.0,
"ER": 38.0,
"R": 38.0,
"H": 83.0,
"BB": 47.0,
"SO": 99.0,
"HR": 5.0,
"BF": 427.0,
"Pitches": 1664.0
},
"per_game": {
"IP": 4.1,
"ER": 1.6522,
"R": 1.6522,
"H": 3.6087,
"BB": 2.0435,
"SO": 4.3043,
"HR": 0.2174,
"BF": 18.5652,
"Pitches": 72.3478
},
"rates": {
"ERA": 3.3529,
"WHIP": 1.2745,
"ER_per_IP": 0.37255,
"H_per_IP": 0.81373,
"BB_per_IP": 0.46078,
"SO_per_IP": 0.97059,
"HR_per_IP": 0.04902
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 1.75,
"predicted_H": 3.723,
"predicted_BB": 2.458,
"predicted_SO": 5.16,
"predicted_HR": 0.409,
"predicted_ERA": 3.0114,
"predicted_WHIP": 1.1822
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4255,
"form_weight": 0.5745,
"form_reliability": 0.8214,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.75,
"final": 1.4309,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 3.723,
"final": 3.4154,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.458,
"final": 1.8377,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 5.16,
"final": 5.0919,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.409,
"final": 0.235,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.0114,
"final": 3.0114,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1822,
"final": 1.1822,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 53.0,
"ER": 16,
"H": 34,
"BB": 25,
"SO": 46,
"HR": 3,
"ERA": 2.7169811320754715,
"WHIP": 1.113207547169811,
"K9": 7.81132075471698,
"HR9": 0.5094339622641508,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-12T00:00:00"
},
"recent_form_boost": 0.7983882372883845,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
}
}
],
"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": 1.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "WAS",
"games": 154,
"wins": 72,
"losses": 82,
"win_pct": 0.4675,
"runs_scored": 787.0,
"runs_allowed": 776.0,
"run_differential": 11.0,
"run_differential_per_game": 0.0714,
"avg_runs_scored": 5.1104,
"avg_runs_allowed": 5.039,
"offense_index": 1.1389,
"defense_index": 0.8905,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.4,
"run_differential": 0.0
},
"available": true,
"quality_score": -0.0189
},
"opponent": {
"team": "STL",
"games": 154,
"wins": 75,
"losses": 79,
"win_pct": 0.487,
"runs_scored": 694.0,
"runs_allowed": 716.0,
"run_differential": -22.0,
"run_differential_per_game": -0.1429,
"avg_runs_scored": 4.5065,
"avg_runs_allowed": 4.6494,
"offense_index": 1.0043,
"defense_index": 0.9651,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 5.0,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.0986
},
"edges": {
"quality_edge": 0.0797,
"offense_edge": 0.1389,
"opponent_offense_edge": 0.0043,
"defense_strength": -0.1095,
"opponent_defense_weakness": 0.0349,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 0.9997,
"run_prevention": 1.0077,
"strikeout": 1.002
},
"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": 385.0,
"k_percent": 23.2,
"bb_percent": 11.0,
"woba": 0.291,
"xwoba": 0.315,
"sweet_spot_percent": 32.7,
"barrel_batted_rate": 5.4,
"hard_hit_percent": 40.3,
"avg_best_speed": 77.4582,
"avg_hyper_speed": 94.3462,
"whiff_percent": 25.7,
"swing_percent": 44.1
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1285,
"command_and_miss": 0.0171,
"regression_edge": -0.6857,
"xwoba_edge": -0.1,
"barrel_edge": 0.4222,
"hard_hit_edge": -0.3286,
"whiff_edge": 0.1,
"bb_edge": -0.475,
"pitch_design_score": -0.148
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "674841",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 80,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 80,
"pitch_usage": 0.0,
"release_speed": 87.20914988011656,
"release_spin_rate": 2496.4983700721295,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 80,
"pitch_usage": 0.0,
"release_speed": 87.20914988011656,
"release_spin_rate": 2496.4983700721295,
"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.2091,
"release_spin_rate": 2496.4984,
"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.148,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.0569,
"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.004,
"sample_weight": 1.0,
"run_prevention_factor": 1.0003,
"strikeout_factor": 1.0109,
"walk_factor": 1.038,
"homer_factor": 0.9824,
"woba_minus_xwoba": -0.024,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "674841",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0003,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0003,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.038,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9824,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0109,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 3,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 96,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"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/20260919_WAS@STL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260919 | 20260919_WAS@STL | home | Michael McGreevy | Michael McGreevy | True | 5.2 | 4.0 | -5 | 2 | 2 | 0 | 3/5 | 3/1 | 7/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.825,
"WHIP": 1.24375,
"IP": 160.0,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.517,
"recent_avg_IP": 5.6,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.5472,
"sample_weight": 1.0,
"run_prevention_factor": 1.0465,
"strikeout_factor": 0.944,
"walk_factor": 0.954,
"homer_factor": 1.09,
"regression_flag": "negative_pitcher_regression",
"k_percent": 17.0,
"bb_percent": 6.8,
"woba": 0.315,
"xwoba": 0.349,
"barrel_percent": 9.4,
"hard_hit_percent": 41.6,
"whiff_percent": 20.2
},
"espn_rank": {
"rank": 88,
"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": "700241",
"report_date": "20260919",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.0,
"ER": 17.0,
"R": 18.0,
"H": 27.0,
"BB": 11.0,
"SO": 21.0,
"HR": 2.0,
"BF": 120.0,
"Pitches": 459.0
},
"per_game": {
"IP": 5.2,
"ER": 3.4,
"R": 3.6,
"H": 5.4,
"BB": 2.2,
"SO": 4.2,
"HR": 0.4,
"BF": 24.0,
"Pitches": 91.8
},
"rates": {
"ERA": 5.4643,
"WHIP": 1.3571,
"ER_per_IP": 0.60714,
"H_per_IP": 0.96429,
"BB_per_IP": 0.39286,
"SO_per_IP": 0.75,
"HR_per_IP": 0.07143
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.0,
"ER": 33.0,
"R": 37.0,
"H": 59.0,
"BB": 21.0,
"SO": 41.0,
"HR": 6.0,
"BF": 231.0,
"Pitches": 912.0
},
"per_game": {
"IP": 5.1,
"ER": 3.3,
"R": 3.7,
"H": 5.9,
"BB": 2.1,
"SO": 4.1,
"HR": 0.6,
"BF": 23.1,
"Pitches": 91.2
},
"rates": {
"ERA": 5.7115,
"WHIP": 1.5385,
"ER_per_IP": 0.63462,
"H_per_IP": 1.13462,
"BB_per_IP": 0.40385,
"SO_per_IP": 0.78846,
"HR_per_IP": 0.11538
}
},
"season": {
"games": 29,
"totals": {
"IP": 160.0,
"ER": 68.0,
"R": 73.0,
"H": 154.0,
"BB": 45.0,
"SO": 112.0,
"HR": 20.0,
"BF": 658.0,
"Pitches": 2594.0
},
"per_game": {
"IP": 5.2,
"ER": 2.3448,
"R": 2.5172,
"H": 5.3103,
"BB": 1.5517,
"SO": 3.8621,
"HR": 0.6897,
"BF": 22.6897,
"Pitches": 89.4483
},
"rates": {
"ERA": 3.825,
"WHIP": 1.2437,
"ER_per_IP": 0.425,
"H_per_IP": 0.9625,
"BB_per_IP": 0.28125,
"SO_per_IP": 0.7,
"HR_per_IP": 0.125
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 3.172,
"predicted_H": 5.662,
"predicted_BB": 2.085,
"predicted_SO": 4.344,
"predicted_HR": 0.585,
"predicted_ERA": 5.1276,
"predicted_WHIP": 1.3917
}
},
"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.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 3.172,
"final": 2.689,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.662,
"final": 4.5649,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.085,
"final": 2.4621,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.344,
"final": 5.4387,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.585,
"final": 0.3439,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.1276,
"final": 5.1276,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3917,
"final": 1.3917,
"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": 33,
"H": 59,
"BB": 21,
"SO": 41,
"HR": 6,
"ERA": 5.711538461538462,
"WHIP": 1.5384615384615385,
"K9": 7.096153846153846,
"HR9": 1.0384615384615385,
"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-13T00:00:00"
},
"recent_form_boost": 1.145907286635264,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_BB": 3.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "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": 3.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 3.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": "STL",
"games": 154,
"wins": 75,
"losses": 79,
"win_pct": 0.487,
"runs_scored": 694.0,
"runs_allowed": 716.0,
"run_differential": -22.0,
"run_differential_per_game": -0.1429,
"avg_runs_scored": 4.5065,
"avg_runs_allowed": 4.6494,
"offense_index": 1.0043,
"defense_index": 0.9651,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 5.0,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.0986
},
"opponent": {
"team": "WAS",
"games": 154,
"wins": 72,
"losses": 82,
"win_pct": 0.4675,
"runs_scored": 787.0,
"runs_allowed": 776.0,
"run_differential": 11.0,
"run_differential_per_game": 0.0714,
"avg_runs_scored": 5.1104,
"avg_runs_allowed": 5.039,
"offense_index": 1.1389,
"defense_index": 0.8905,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 4.4,
"run_differential": 0.0
},
"available": true,
"quality_score": -0.0189
},
"edges": {
"quality_edge": -0.0797,
"offense_edge": 0.0043,
"opponent_offense_edge": 0.1389,
"defense_strength": -0.0349,
"opponent_defense_weakness": 0.1095,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9902,
"run_prevention": 1.0297,
"strikeout": 0.9865
},
"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": 608.0,
"k_percent": 17.0,
"bb_percent": 6.8,
"woba": 0.315,
"xwoba": 0.349,
"sweet_spot_percent": 34.0,
"barrel_batted_rate": 9.4,
"hard_hit_percent": 41.6,
"avg_best_speed": 78.917,
"avg_hyper_speed": 94.6712,
"whiff_percent": 20.2,
"swing_percent": 44.6
},
"league_medians": {
"pa": 134.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.3165,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.3,
"hard_hit_percent": 38.0,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.92,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.574,
"command_and_miss": -0.4464,
"regression_edge": -0.9714,
"xwoba_edge": -1.0714,
"barrel_edge": -0.4667,
"hard_hit_edge": -0.5143,
"whiff_edge": -0.6857,
"bb_edge": 0.575,
"pitch_design_score": -0.1566
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "700241",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 94,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 87.05458051854275,
"release_spin_rate": 2203.9564952408964,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 87.05458051854275,
"release_spin_rate": 2203.9564952408964,
"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.0546,
"release_spin_rate": 2203.9565,
"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.1566,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.1188,
"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.5472,
"sample_weight": 1.0,
"run_prevention_factor": 1.0465,
"strikeout_factor": 0.944,
"walk_factor": 0.954,
"homer_factor": 1.09,
"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.0465,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0465,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.954,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.09,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.944,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 92,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260919_WAS@STL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |