| 20260923 | 20260923_ARI@COL | away | Merrill Kelly | Merrill Kelly | True | 5.1 | 5.1 | 0 | 5 | 2 | -3 | 9/4 | 3/1 | 3/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.997872340425532,
"WHIP": 1.4744680851063832,
"IP": 156.2,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.595,
"recent_avg_IP": 5.533,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.9213,
"sample_weight": 1.0,
"run_prevention_factor": 1.0783,
"strikeout_factor": 0.9486,
"walk_factor": 1.02,
"homer_factor": 1.158,
"regression_flag": "neutral",
"k_percent": 16.3,
"bb_percent": 10.1,
"woba": 0.354,
"xwoba": 0.38,
"barrel_percent": 11.4,
"hard_hit_percent": 42.2,
"whiff_percent": 21.7
},
"espn_rank": {
"rank": 367,
"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": "518876",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.2,
"ER": 10.0,
"R": 11.0,
"H": 23.0,
"BB": 12.0,
"SO": 27.0,
"HR": 2.0,
"BF": 118.0,
"Pitches": 464.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0,
"R": 2.2,
"H": 4.6,
"BB": 2.4,
"SO": 5.4,
"HR": 0.4,
"BF": 23.6,
"Pitches": 92.8
},
"rates": {
"ERA": 3.253,
"WHIP": 1.2651,
"ER_per_IP": 0.36145,
"H_per_IP": 0.83133,
"BB_per_IP": 0.43373,
"SO_per_IP": 0.9759,
"HR_per_IP": 0.07229
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.0,
"ER": 28.0,
"R": 30.0,
"H": 50.0,
"BB": 28.0,
"SO": 46.0,
"HR": 6.0,
"BF": 232.0,
"Pitches": 890.0
},
"per_game": {
"IP": 5.1,
"ER": 2.8,
"R": 3.0,
"H": 5.0,
"BB": 2.8,
"SO": 4.6,
"HR": 0.6,
"BF": 23.2,
"Pitches": 89.0
},
"rates": {
"ERA": 4.7547,
"WHIP": 1.4717,
"ER_per_IP": 0.5283,
"H_per_IP": 0.9434,
"BB_per_IP": 0.5283,
"SO_per_IP": 0.86792,
"HR_per_IP": 0.11321
}
},
"season": {
"games": 28,
"totals": {
"IP": 156.2,
"ER": 87.0,
"R": 91.0,
"H": 162.0,
"BB": 69.0,
"SO": 111.0,
"HR": 28.0,
"BF": 683.0,
"Pitches": 2543.0
},
"per_game": {
"IP": 5.2,
"ER": 3.1071,
"R": 3.25,
"H": 5.7857,
"BB": 2.4643,
"SO": 3.9643,
"HR": 1.0,
"BF": 24.3929,
"Pitches": 90.8214
},
"rates": {
"ERA": 4.9979,
"WHIP": 1.4745,
"ER_per_IP": 0.55532,
"H_per_IP": 1.03404,
"BB_per_IP": 0.44043,
"SO_per_IP": 0.70851,
"HR_per_IP": 0.17872
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.596,
"predicted_H": 5.131,
"predicted_BB": 2.529,
"predicted_SO": 4.97,
"predicted_HR": 0.635,
"predicted_ERA": 4.1971,
"predicted_WHIP": 1.3759
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.414,
"form_weight": 0.586,
"form_reliability": 0.8485,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 2.596,
"final": 3.5913,
"source": "model_form_blend"
},
"predicted_H": {
"model": 9.0,
"form": 5.131,
"final": 6.7328,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.529,
"final": 2.724,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.97,
"final": 4.1544,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.635,
"final": 0.7861,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1971,
"final": 4.1971,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3759,
"final": 1.3759,
"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": 28,
"H": 50,
"BB": 28,
"SO": 46,
"HR": 6,
"ERA": 4.754716981132075,
"WHIP": 1.471698113207547,
"K9": 7.811320754716981,
"HR9": 1.0188679245283019,
"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-16T00:00:00"
},
"recent_form_boost": 1.0354119066472924,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 5.0,
"predicted_H": 9.0,
"predicted_BB": 3.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.1,
"predicted_ER": 5,
"predicted_H": 9,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "518876",
"player_name": "Merrill Kelly",
"position": "Starter",
"team": "ARI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 5.0,
"predicted_H": 9.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 5.0,
"predicted_H": 9.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 9.0,
"after": 9.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.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": 3.0,
"predicted_ER": 5.0,
"predicted_H": 9.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_R": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 9.0,
"after": 9.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": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 9.0,
"after": 9.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.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": "ARI",
"games": 157,
"wins": 83,
"losses": 74,
"win_pct": 0.5287,
"runs_scored": 700.0,
"runs_allowed": 696.0,
"run_differential": 4.0,
"run_differential_per_game": 0.0255,
"avg_runs_scored": 4.4586,
"avg_runs_allowed": 4.4331,
"offense_index": 0.9946,
"defense_index": 1.0113,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 4.7,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.0275
},
"opponent": {
"team": "COL",
"games": 157,
"wins": 57,
"losses": 100,
"win_pct": 0.3631,
"runs_scored": 729.0,
"runs_allowed": 911.0,
"run_differential": -182.0,
"run_differential_per_game": -1.1592,
"avg_runs_scored": 4.6433,
"avg_runs_allowed": 5.8025,
"offense_index": 1.0358,
"defense_index": 0.7726,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 6.5,
"run_differential": -24.0
},
"available": true,
"quality_score": -0.3636
},
"edges": {
"quality_edge": 0.3911,
"offense_edge": -0.0054,
"opponent_offense_edge": 0.0358,
"defense_strength": 0.0113,
"opponent_defense_weakness": 0.2274,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0146,
"run_prevention": 0.985,
"strikeout": 1.0089
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "518876",
"profile": {
"available": true,
"pitcher_id": "518876",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 629.0,
"k_percent": 16.3,
"bb_percent": 10.1,
"woba": 0.354,
"xwoba": 0.38,
"sweet_spot_percent": 38.0,
"barrel_batted_rate": 11.4,
"hard_hit_percent": 42.2,
"avg_best_speed": 78.994,
"avg_hyper_speed": 94.6761,
"whiff_percent": 21.7,
"swing_percent": 49.0
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -1.2388,
"command_and_miss": -0.58,
"regression_edge": -0.7429,
"xwoba_edge": -1.9571,
"barrel_edge": -0.9333,
"hard_hit_edge": -0.6143,
"whiff_edge": -0.4857,
"bb_edge": -0.25,
"pitch_design_score": -0.0313
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "518876",
"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.30413110861726,
"release_spin_rate": 2317.3364498145124,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.30413110861726,
"release_spin_rate": 2317.3364498145124,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.3041,
"release_spin_rate": 2317.3364,
"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.0313,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2238,
"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.9213,
"sample_weight": 1.0,
"run_prevention_factor": 1.0783,
"strikeout_factor": 0.9486,
"walk_factor": 1.02,
"homer_factor": 1.158,
"woba_minus_xwoba": -0.026,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "518876",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0783,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0783,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.02,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.158,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9486,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 9,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 28,
"Pitches": 109,
"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/20260923_ARI@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"
}
} |
| 20260923 | 20260923_ARI@COL | home | Mason Adams | Mason Adams | True | 4.1 | 6.0 | 5 | 5 | 0 | -5 | 6/5 | 4/0 | 4/8 | Last 10 before this game (5 available){
"model_context": {
"embedded_season": {
"ERA": 5.086956521739131,
"WHIP": 1.6521739130434783,
"IP": 23.0,
"games_started": null,
"games_pitched": 5,
"role_avg_IP": 4.6,
"recent_avg_IP": 4.6,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3867,
"sample_weight": 0.45,
"run_prevention_factor": 1.0329,
"strikeout_factor": 0.9864,
"walk_factor": 1.0252,
"homer_factor": 1.094,
"regression_flag": "positive_pitcher_regression",
"k_percent": 22.8,
"bb_percent": 11.9,
"woba": 0.406,
"xwoba": 0.364,
"barrel_percent": 10.8,
"hard_hit_percent": 55.4,
"whiff_percent": 18.9
},
"espn_rank": {
"rank": 271,
"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": 5.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5,
"prior_weight": 0.5
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "690279",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 5,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.0,
"ER": 13.0,
"R": 13.0,
"H": 26.0,
"BB": 12.0,
"SO": 23.0,
"HR": 6.0,
"BF": 101.0,
"Pitches": 388.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6,
"R": 2.6,
"H": 5.2,
"BB": 2.4,
"SO": 4.6,
"HR": 1.2,
"BF": 20.2,
"Pitches": 77.6
},
"rates": {
"ERA": 5.087,
"WHIP": 1.6522,
"ER_per_IP": 0.56522,
"H_per_IP": 1.13043,
"BB_per_IP": 0.52174,
"SO_per_IP": 1.0,
"HR_per_IP": 0.26087
}
},
"last_10": {
"games": 5,
"totals": {
"IP": 23.0,
"ER": 13.0,
"R": 13.0,
"H": 26.0,
"BB": 12.0,
"SO": 23.0,
"HR": 6.0,
"BF": 101.0,
"Pitches": 388.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6,
"R": 2.6,
"H": 5.2,
"BB": 2.4,
"SO": 4.6,
"HR": 1.2,
"BF": 20.2,
"Pitches": 77.6
},
"rates": {
"ERA": 5.087,
"WHIP": 1.6522,
"ER_per_IP": 0.56522,
"H_per_IP": 1.13043,
"BB_per_IP": 0.52174,
"SO_per_IP": 1.0,
"HR_per_IP": 0.26087
}
},
"season": {
"games": 5,
"totals": {
"IP": 23.0,
"ER": 13.0,
"R": 13.0,
"H": 26.0,
"BB": 12.0,
"SO": 23.0,
"HR": 6.0,
"BF": 101.0,
"Pitches": 388.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6,
"R": 2.6,
"H": 5.2,
"BB": 2.4,
"SO": 4.6,
"HR": 1.2,
"BF": 20.2,
"Pitches": 77.6
},
"rates": {
"ERA": 5.087,
"WHIP": 1.6522,
"ER_per_IP": 0.56522,
"H_per_IP": 1.13043,
"BB_per_IP": 0.52174,
"SO_per_IP": 1.0,
"HR_per_IP": 0.26087
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.508,
"predicted_H": 4.925,
"predicted_BB": 2.096,
"predicted_SO": 4.52,
"predicted_HR": 0.955,
"predicted_ERA": 4.8369,
"predicted_WHIP": 1.5046
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5613,
"form_weight": 0.4388,
"form_reliability": 0.5,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5,
"prior_weight": 0.5
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 6.0,
"form": 2.508,
"final": 4.4679,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.925,
"final": 4.4058,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 2.096,
"final": 3.1646,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.52,
"final": 4.2282,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.955,
"final": 1.5415,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.8369,
"final": 4.8369,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5046,
"final": 1.5046,
"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": 23.0,
"ER": 13,
"H": 26,
"BB": 12,
"SO": 23,
"HR": 6,
"ERA": 5.086956521739131,
"WHIP": 1.6521739130434783,
"K9": 9.0,
"HR9": 2.347826086956522,
"games_pitched": 5,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 5,
"error_prone": false
},
"games_count": 5,
"latest_game_date": "2026-09-16T00:00:00"
},
"recent_form_boost": 1.0588670302728374,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 6.0,
"predicted_H": 4.0,
"predicted_BB": 4.0,
"predicted_SO": 4.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5,
"prior_weight": 0.5
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 6,
"predicted_H": 4,
"predicted_BB": 4,
"predicted_SO": 4,
"predicted_HR": 2
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 6,
"predicted_H": 6,
"predicted_BB": 4,
"predicted_SO": 4,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "690279",
"player_name": "Mason Adams",
"position": "Starter",
"team": "COL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 6.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 4.6667,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 6.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 4.1,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 6.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 4.1,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"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.1,
"after": 4.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 6.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 4.1,
"predicted_R": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.1,
"after": 4.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_H",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 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": 157,
"wins": 57,
"losses": 100,
"win_pct": 0.3631,
"runs_scored": 729.0,
"runs_allowed": 911.0,
"run_differential": -182.0,
"run_differential_per_game": -1.1592,
"avg_runs_scored": 4.6433,
"avg_runs_allowed": 5.8025,
"offense_index": 1.0358,
"defense_index": 0.7726,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 6.5,
"run_differential": -24.0
},
"available": true,
"quality_score": -0.3636
},
"opponent": {
"team": "ARI",
"games": 157,
"wins": 83,
"losses": 74,
"win_pct": 0.5287,
"runs_scored": 700.0,
"runs_allowed": 696.0,
"run_differential": 4.0,
"run_differential_per_game": 0.0255,
"avg_runs_scored": 4.4586,
"avg_runs_allowed": 4.4331,
"offense_index": 0.9946,
"defense_index": 1.0113,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 4.7,
"run_differential": 5.0
},
"available": true,
"quality_score": 0.0275
},
"edges": {
"quality_edge": -0.3911,
"offense_edge": 0.0358,
"opponent_offense_edge": -0.0054,
"defense_strength": -0.2274,
"opponent_defense_weakness": -0.0113,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9778,
"run_prevention": 1.0414,
"strikeout": 0.9887
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "690279",
"profile": {
"available": true,
"pitcher_id": "690279",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 77.0,
"k_percent": 22.8,
"bb_percent": 11.9,
"woba": 0.406,
"xwoba": 0.364,
"sweet_spot_percent": 41.5,
"barrel_batted_rate": 10.8,
"hard_hit_percent": 55.4,
"avg_best_speed": 82.8197,
"avg_hyper_speed": 95.8825,
"whiff_percent": 18.9,
"swing_percent": 46.4
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -1.5639,
"command_and_miss": -0.3921,
"regression_edge": 1.2,
"xwoba_edge": -1.5,
"barrel_edge": -0.8,
"hard_hit_edge": -2.5,
"whiff_edge": -0.8857,
"bb_edge": -0.7,
"pitch_design_score": -0.021
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "690279",
"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": 89.4878385893386,
"release_spin_rate": 2271.065268740269,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 89.4878385893386,
"release_spin_rate": 2271.065268740269,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.4878,
"release_spin_rate": 2271.0653,
"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.1503,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.3867,
"sample_weight": 0.45,
"run_prevention_factor": 1.0329,
"strikeout_factor": 0.9864,
"walk_factor": 1.0252,
"homer_factor": 1.094,
"woba_minus_xwoba": 0.042,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "690279",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0148,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0148,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0113,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0423,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9939,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 6,
"predicted_R": 6,
"predicted_ER": 6,
"predicted_BB": 4,
"predicted_SO": 4,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 23,
"Pitches": 101,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 5 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 5",
"detail": "Actual minus predicted earned runs was -5; this is the primary run-prevention error."
},
{
"code": "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."
},
{
"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/20260923_ARI@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"
}
} |
| 20260923 | 20260923_CHW@KC | away | Bryan Hudson | Bryan Hudson | True | 5.0 | 0.1 | -14 | 2 | 3 | 1 | 4/4 | 6/0 | 5/0 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.6173469387755106,
"WHIP": 1.1632653061224492,
"IP": 65.1,
"games_started": null,
"games_pitched": 66,
"role_avg_IP": 1.208,
"recent_avg_IP": 1.267,
"last_start_IP": 1.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4575,
"sample_weight": 1.0,
"run_prevention_factor": 0.9611,
"strikeout_factor": 0.9909,
"walk_factor": 0.944,
"homer_factor": 0.9149,
"regression_flag": "neutral",
"k_percent": 21.9,
"bb_percent": 6.3,
"woba": 0.292,
"xwoba": 0.273,
"barrel_percent": 4.3,
"hard_hit_percent": 37.8,
"whiff_percent": 23.5
},
"espn_rank": {
"rank": 99,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 6.0,
"season_IP": 65.1,
"season_ERA": 2.617,
"season_WHIP": 1.163,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 13.31,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7269,
"prior_weight": 0.2731
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663542",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 66,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 4.1,
"ER": 2.0,
"R": 2.0,
"H": 6.0,
"BB": 0.0,
"SO": 2.0,
"HR": 1.0,
"BF": 16.0,
"Pitches": 58.0
},
"per_game": {
"IP": 1.0,
"ER": 0.4,
"R": 0.4,
"H": 1.2,
"BB": 0.0,
"SO": 0.4,
"HR": 0.2,
"BF": 3.2,
"Pitches": 11.6
},
"rates": {
"ERA": 4.1538,
"WHIP": 1.3846,
"ER_per_IP": 0.46154,
"H_per_IP": 1.38462,
"BB_per_IP": 0.0,
"SO_per_IP": 0.46154,
"HR_per_IP": 0.23077
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 10.1,
"ER": 2.0,
"R": 2.0,
"H": 11.0,
"BB": 0.0,
"SO": 7.0,
"HR": 1.0,
"BF": 38.0,
"Pitches": 129.0
},
"per_game": {
"IP": 1.0,
"ER": 0.2,
"R": 0.2,
"H": 1.1,
"BB": 0.0,
"SO": 0.7,
"HR": 0.1,
"BF": 3.8,
"Pitches": 12.9
},
"rates": {
"ERA": 1.7419,
"WHIP": 1.0645,
"ER_per_IP": 0.19355,
"H_per_IP": 1.06452,
"BB_per_IP": 0.0,
"SO_per_IP": 0.67742,
"HR_per_IP": 0.09677
}
},
"season": {
"games": 66,
"totals": {
"IP": 65.1,
"ER": 19.0,
"R": 21.0,
"H": 59.0,
"BB": 17.0,
"SO": 59.0,
"HR": 5.0,
"BF": 266.0,
"Pitches": 1003.0
},
"per_game": {
"IP": 1.0,
"ER": 0.2879,
"R": 0.3182,
"H": 0.8939,
"BB": 0.2576,
"SO": 0.8939,
"HR": 0.0758,
"BF": 4.0303,
"Pitches": 15.197
},
"rates": {
"ERA": 2.6173,
"WHIP": 1.1633,
"ER_per_IP": 0.29082,
"H_per_IP": 0.90306,
"BB_per_IP": 0.2602,
"SO_per_IP": 0.90306,
"HR_per_IP": 0.07653
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 2.1,
"predicted_ER": 0.903,
"predicted_H": 2.656,
"predicted_BB": 0.333,
"predicted_SO": 1.681,
"predicted_HR": 0.359,
"predicted_ERA": 3.4351,
"predicted_WHIP": 1.2634
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4654,
"form_weight": 0.5346,
"form_reliability": 0.7269,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 13.31,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7269,
"prior_weight": 0.2731
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 2.1,
"final": 4.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 0.903,
"final": 1.8789,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 2.656,
"final": 3.2815,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 6.0,
"form": 0.333,
"final": 2.9703,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 1.681,
"final": 3.2256,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.359,
"final": 0.1919,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.4351,
"final": 3.4351,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2634,
"final": 1.2634,
"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": 10.1,
"ER": 2,
"H": 11,
"BB": 0,
"SO": 7,
"HR": 1,
"ERA": 1.741935483870968,
"WHIP": 1.0645161290322582,
"K9": 6.096774193548388,
"HR9": 0.870967741935484,
"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-18T00:00:00"
},
"recent_form_boost": 0.8926694782047592,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_BB": 6.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 13.31,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7269,
"prior_weight": 0.2731
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3,
"predicted_H": 4,
"predicted_BB": 6,
"predicted_SO": 5,
"predicted_HR": 0
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 6,
"predicted_SO": 5,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663542",
"player_name": "Bryan Hudson",
"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": 6.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 6.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 5.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 5.0,
"delta": -1.0,
"percent_delta": -0.1667,
"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.0,
"after": 5.0,
"delta": -1.0,
"percent_delta": -0.1667,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 6.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 5.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": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 6.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 5.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": 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": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 5.0,
"delta": -1.0,
"percent_delta": -0.1667,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 0,
"deboosted_metrics": 2,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "deboosted"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CHW",
"games": 157,
"wins": 81,
"losses": 76,
"win_pct": 0.5159,
"runs_scored": 747.0,
"runs_allowed": 702.0,
"run_differential": 45.0,
"run_differential_per_game": 0.2866,
"avg_runs_scored": 4.758,
"avg_runs_allowed": 4.4713,
"offense_index": 1.062,
"defense_index": 1.002,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.9,
"avg_runs_allowed": 4.9,
"run_differential": 10.0
},
"available": true,
"quality_score": 0.0837
},
"opponent": {
"team": "KC",
"games": 157,
"wins": 67,
"losses": 90,
"win_pct": 0.4268,
"runs_scored": 667.0,
"runs_allowed": 772.0,
"run_differential": -105.0,
"run_differential_per_game": -0.6688,
"avg_runs_scored": 4.2484,
"avg_runs_allowed": 4.9172,
"offense_index": 0.9483,
"defense_index": 0.9111,
"current_streak": "L5",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 5.5,
"run_differential": -17.0
},
"available": true,
"quality_score": -0.2493
},
"edges": {
"quality_edge": 0.333,
"offense_edge": 0.062,
"opponent_offense_edge": -0.0517,
"defense_strength": 0.002,
"opponent_defense_weakness": 0.0889,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0154,
"run_prevention": 0.9749,
"strikeout": 1.0141
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663542",
"profile": {
"available": true,
"pitcher_id": "663542",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 256.0,
"k_percent": 21.9,
"bb_percent": 6.3,
"woba": 0.292,
"xwoba": 0.273,
"sweet_spot_percent": 29.3,
"barrel_batted_rate": 4.3,
"hard_hit_percent": 37.8,
"avg_best_speed": 76.9829,
"avg_hyper_speed": 93.3373,
"whiff_percent": 23.5,
"swing_percent": 48.0
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.7034,
"command_and_miss": 0.06,
"regression_edge": 0.5429,
"xwoba_edge": 1.1,
"barrel_edge": 0.6444,
"hard_hit_edge": 0.0143,
"whiff_edge": -0.2286,
"bb_edge": 0.7,
"pitch_design_score": -0.0787
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663542",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 13,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 13,
"pitch_usage": 0.0,
"release_speed": 88.45909611346684,
"release_spin_rate": 2154.7309004103313,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 13,
"pitch_usage": 0.0,
"release_speed": 88.45909611346684,
"release_spin_rate": 2154.7309004103313,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.4591,
"release_spin_rate": 2154.7309,
"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.0787,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5618,
"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.4575,
"sample_weight": 1.0,
"run_prevention_factor": 0.9611,
"strikeout_factor": 0.9909,
"walk_factor": 0.944,
"homer_factor": 0.9149,
"woba_minus_xwoba": 0.019,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "663542",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9611,
"adjusted": 1
},
"predicted_H": {
"original": 2.0,
"factor": 0.9611,
"adjusted": 2
},
"predicted_BB": {
"original": 0.0,
"factor": 0.944,
"adjusted": 0
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9149,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9909,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 6,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"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."
},
{
"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": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -6."
}
],
"provenance": {
"prediction": "output/games/20260923_CHW@KC.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_CHW@KC | home | Seth Lugo | Seth Lugo | True | 4.2 | 3.1 | -4 | 3 | 4 | 1 | 4/7 | 6/0 | 6/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.059171597633136,
"WHIP": 1.4615384615384615,
"IP": 169.0,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.452,
"recent_avg_IP": 4.733,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.4979,
"sample_weight": 1.0,
"run_prevention_factor": 1.0423,
"strikeout_factor": 0.9411,
"walk_factor": 0.966,
"homer_factor": 1.0692,
"regression_flag": "neutral",
"k_percent": 17.9,
"bb_percent": 7.4,
"woba": 0.359,
"xwoba": 0.343,
"barrel_percent": 8.0,
"hard_hit_percent": 42.8,
"whiff_percent": 18.8
},
"espn_rank": {
"rank": 689,
"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": "607625",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.2,
"ER": 19.0,
"R": 19.0,
"H": 38.0,
"BB": 8.0,
"SO": 20.0,
"HR": 7.0,
"BF": 113.0,
"Pitches": 448.0
},
"per_game": {
"IP": 4.2,
"ER": 3.8,
"R": 3.8,
"H": 7.6,
"BB": 1.6,
"SO": 4.0,
"HR": 1.4,
"BF": 22.6,
"Pitches": 89.6
},
"rates": {
"ERA": 7.2254,
"WHIP": 1.9437,
"ER_per_IP": 0.80282,
"H_per_IP": 1.60563,
"BB_per_IP": 0.33803,
"SO_per_IP": 0.84507,
"HR_per_IP": 0.29577
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.1,
"ER": 38.0,
"R": 38.0,
"H": 70.0,
"BB": 16.0,
"SO": 37.0,
"HR": 8.0,
"BF": 233.0,
"Pitches": 903.0
},
"per_game": {
"IP": 5.0,
"ER": 3.8,
"R": 3.8,
"H": 7.0,
"BB": 1.6,
"SO": 3.7,
"HR": 0.8,
"BF": 23.3,
"Pitches": 90.3
},
"rates": {
"ERA": 6.6623,
"WHIP": 1.6753,
"ER_per_IP": 0.74026,
"H_per_IP": 1.36364,
"BB_per_IP": 0.31169,
"SO_per_IP": 0.72078,
"HR_per_IP": 0.15584
}
},
"season": {
"games": 31,
"totals": {
"IP": 169.0,
"ER": 95.0,
"R": 103.0,
"H": 193.0,
"BB": 54.0,
"SO": 131.0,
"HR": 23.0,
"BF": 732.0,
"Pitches": 2786.0
},
"per_game": {
"IP": 5.1,
"ER": 3.0645,
"R": 3.3226,
"H": 6.2258,
"BB": 1.7419,
"SO": 4.2258,
"HR": 0.7419,
"BF": 23.6129,
"Pitches": 89.871
},
"rates": {
"ERA": 5.0592,
"WHIP": 1.4615,
"ER_per_IP": 0.56213,
"H_per_IP": 1.14201,
"BB_per_IP": 0.31953,
"SO_per_IP": 0.77515,
"HR_per_IP": 0.13609
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 3.459,
"predicted_H": 6.732,
"predicted_BB": 1.637,
"predicted_SO": 3.984,
"predicted_HR": 1.013,
"predicted_ERA": 6.3161,
"predicted_WHIP": 1.6983
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 3.459,
"final": 3.6801,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 6.732,
"final": 5.6155,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 6.0,
"form": 1.637,
"final": 3.4201,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 3.984,
"final": 4.8079,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.013,
"final": 0.599,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.3161,
"final": 6.3161,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.6983,
"final": 1.6983,
"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": 38,
"H": 70,
"BB": 16,
"SO": 37,
"HR": 8,
"ERA": 6.662337662337663,
"WHIP": 1.6753246753246755,
"K9": 6.487012987012988,
"HR9": 1.4025974025974026,
"games_pitched": 10,
"quality_starts": 2,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-17T00:00:00"
},
"recent_form_boost": 1.2551098973358492,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_BB": 6.0,
"predicted_SO": 6.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": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 4,
"predicted_H": 4,
"predicted_BB": 6,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "607625",
"player_name": "Seth Lugo",
"position": "Starter",
"team": "KC",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 6.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 6.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.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": 6.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 4.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.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": "KC",
"games": 157,
"wins": 67,
"losses": 90,
"win_pct": 0.4268,
"runs_scored": 667.0,
"runs_allowed": 772.0,
"run_differential": -105.0,
"run_differential_per_game": -0.6688,
"avg_runs_scored": 4.2484,
"avg_runs_allowed": 4.9172,
"offense_index": 0.9483,
"defense_index": 0.9111,
"current_streak": "L5",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 5.5,
"run_differential": -17.0
},
"available": true,
"quality_score": -0.2493
},
"opponent": {
"team": "CHW",
"games": 157,
"wins": 81,
"losses": 76,
"win_pct": 0.5159,
"runs_scored": 747.0,
"runs_allowed": 702.0,
"run_differential": 45.0,
"run_differential_per_game": 0.2866,
"avg_runs_scored": 4.758,
"avg_runs_allowed": 4.4713,
"offense_index": 1.062,
"defense_index": 1.002,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.9,
"avg_runs_allowed": 4.9,
"run_differential": 10.0
},
"available": true,
"quality_score": 0.0837
},
"edges": {
"quality_edge": -0.333,
"offense_edge": -0.0517,
"opponent_offense_edge": 0.062,
"defense_strength": -0.0889,
"opponent_defense_weakness": -0.002,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9815,
"run_prevention": 1.0355,
"strikeout": 0.985
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "607625",
"profile": {
"available": true,
"pitcher_id": "607625",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 704.0,
"k_percent": 17.9,
"bb_percent": 7.4,
"woba": 0.359,
"xwoba": 0.343,
"sweet_spot_percent": 36.5,
"barrel_batted_rate": 8.0,
"hard_hit_percent": 42.8,
"avg_best_speed": 79.0229,
"avg_hyper_speed": 94.5587,
"whiff_percent": 18.8,
"swing_percent": 46.1
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.7117,
"command_and_miss": -0.4871,
"regression_edge": 0.4571,
"xwoba_edge": -0.9,
"barrel_edge": -0.1778,
"hard_hit_edge": -0.7,
"whiff_edge": -0.9,
"bb_edge": 0.425,
"pitch_design_score": -0.2303
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "607625",
"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": 85.75049184869331,
"release_spin_rate": 2511.4585714700015,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 85.75049184869331,
"release_spin_rate": 2511.4585714700015,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.7505,
"release_spin_rate": 2511.4586,
"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.2303,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.6453,
"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.4979,
"sample_weight": 1.0,
"run_prevention_factor": 1.0423,
"strikeout_factor": 0.9411,
"walk_factor": 0.966,
"homer_factor": 1.0692,
"woba_minus_xwoba": 0.016,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "607625",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0423,
"adjusted": 3
},
"predicted_H": {
"original": 7.0,
"factor": 1.0423,
"adjusted": 7
},
"predicted_BB": {
"original": 2.0,
"factor": 0.966,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0692,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9411,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 4,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 6,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 97,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -6."
}
],
"provenance": {
"prediction": "output/games/20260923_CHW@KC.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_CIN@ATL | away | Andrew Abbott | Andrew Abbott | True | 4.1 | 7.0 | 8 | 1 | 2 | 1 | 5/6 | 1/1 | 8/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.69811320754717,
"WHIP": 1.471698113207547,
"IP": 159.0,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.129,
"recent_avg_IP": 3.933,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.4444,
"sample_weight": 1.0,
"run_prevention_factor": 1.0378,
"strikeout_factor": 0.9606,
"walk_factor": 1.032,
"homer_factor": 1.0482,
"regression_flag": "neutral",
"k_percent": 17.8,
"bb_percent": 10.7,
"woba": 0.335,
"xwoba": 0.341,
"barrel_percent": 8.2,
"hard_hit_percent": 38.8,
"whiff_percent": 22.3
},
"espn_rank": {
"rank": 150,
"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": "671096",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 19.2,
"ER": 20.0,
"R": 22.0,
"H": 30.0,
"BB": 9.0,
"SO": 17.0,
"HR": 6.0,
"BF": 97.0,
"Pitches": 355.0
},
"per_game": {
"IP": 4.0,
"ER": 4.0,
"R": 4.4,
"H": 6.0,
"BB": 1.8,
"SO": 3.4,
"HR": 1.2,
"BF": 19.4,
"Pitches": 71.0
},
"rates": {
"ERA": 9.1525,
"WHIP": 1.9831,
"ER_per_IP": 1.01695,
"H_per_IP": 1.52542,
"BB_per_IP": 0.45763,
"SO_per_IP": 0.86441,
"HR_per_IP": 0.30508
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.0,
"ER": 35.0,
"R": 37.0,
"H": 54.0,
"BB": 25.0,
"SO": 35.0,
"HR": 8.0,
"BF": 220.0,
"Pitches": 832.0
},
"per_game": {
"IP": 4.2,
"ER": 3.5,
"R": 3.7,
"H": 5.4,
"BB": 2.5,
"SO": 3.5,
"HR": 0.8,
"BF": 22.0,
"Pitches": 83.2
},
"rates": {
"ERA": 6.5625,
"WHIP": 1.6458,
"ER_per_IP": 0.72917,
"H_per_IP": 1.125,
"BB_per_IP": 0.52083,
"SO_per_IP": 0.72917,
"HR_per_IP": 0.16667
}
},
"season": {
"games": 31,
"totals": {
"IP": 159.0,
"ER": 83.0,
"R": 89.0,
"H": 159.0,
"BB": 75.0,
"SO": 125.0,
"HR": 24.0,
"BF": 701.0,
"Pitches": 2769.0
},
"per_game": {
"IP": 5.0,
"ER": 2.6774,
"R": 2.871,
"H": 5.129,
"BB": 2.4194,
"SO": 4.0323,
"HR": 0.7742,
"BF": 22.6129,
"Pitches": 89.3226
},
"rates": {
"ERA": 4.6981,
"WHIP": 1.4717,
"ER_per_IP": 0.52201,
"H_per_IP": 1.0,
"BB_per_IP": 0.4717,
"SO_per_IP": 0.78616,
"HR_per_IP": 0.15094
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 3.459,
"predicted_H": 5.531,
"predicted_BB": 2.089,
"predicted_SO": 3.663,
"predicted_HR": 0.96,
"predicted_ERA": 6.9706,
"predicted_WHIP": 1.7064
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.1,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 3.459,
"final": 2.454,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.531,
"final": 5.314,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.089,
"final": 1.6439,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 3.663,
"final": 5.4355,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.96,
"final": 0.9763,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.9706,
"final": 6.9706,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.7064,
"final": 1.7064,
"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.0,
"ER": 35,
"H": 54,
"BB": 25,
"SO": 35,
"HR": 8,
"ERA": 6.5625,
"WHIP": 1.6458333333333333,
"K9": 6.5625,
"HR9": 1.5,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-16T00:00:00"
},
"recent_form_boost": 1.2431408767730785,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_BB": 1.0,
"predicted_SO": 8.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 1,
"predicted_H": 5,
"predicted_BB": 1,
"predicted_SO": 8,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "671096",
"player_name": "Andrew Abbott",
"position": "Starter",
"team": "CIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 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": 1.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.1,
"after": 4.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 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": "CIN",
"games": 157,
"wins": 73,
"losses": 84,
"win_pct": 0.465,
"runs_scored": 646.0,
"runs_allowed": 805.0,
"run_differential": -159.0,
"run_differential_per_game": -1.0127,
"avg_runs_scored": 4.1146,
"avg_runs_allowed": 5.1274,
"offense_index": 0.9184,
"defense_index": 0.8738,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.5,
"avg_runs_allowed": 5.2,
"run_differential": -17.0
},
"available": true,
"quality_score": -0.1891
},
"opponent": {
"team": "ATL",
"games": 157,
"wins": 92,
"losses": 65,
"win_pct": 0.586,
"runs_scored": 722.0,
"runs_allowed": 606.0,
"run_differential": 116.0,
"run_differential_per_game": 0.7389,
"avg_runs_scored": 4.5987,
"avg_runs_allowed": 3.8599,
"offense_index": 1.0265,
"defense_index": 1.1607,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.1,
"avg_runs_allowed": 4.5,
"run_differential": 6.0
},
"available": true,
"quality_score": 0.1988
},
"edges": {
"quality_edge": -0.3879,
"offense_edge": -0.0816,
"opponent_offense_edge": 0.0265,
"defense_strength": -0.1262,
"opponent_defense_weakness": -0.1607,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9796,
"run_prevention": 1.0363,
"strikeout": 0.9862
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "671096",
"profile": {
"available": true,
"pitcher_id": "671096",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 645.0,
"k_percent": 17.8,
"bb_percent": 10.7,
"woba": 0.335,
"xwoba": 0.341,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 8.2,
"hard_hit_percent": 38.8,
"avg_best_speed": 79.7415,
"avg_hyper_speed": 94.2035,
"whiff_percent": 22.3,
"swing_percent": 46.0
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.5185,
"command_and_miss": -0.4836,
"regression_edge": -0.1714,
"xwoba_edge": -0.8429,
"barrel_edge": -0.2222,
"hard_hit_edge": -0.1286,
"whiff_edge": -0.4,
"bb_edge": -0.4,
"pitch_design_score": -0.1391
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "671096",
"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": 87.37940672170677,
"release_spin_rate": 2443.046166911797,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 87.37940672170677,
"release_spin_rate": 2443.046166911797,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.3794,
"release_spin_rate": 2443.0462,
"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.1391,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.9937,
"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.4444,
"sample_weight": 1.0,
"run_prevention_factor": 1.0378,
"strikeout_factor": 0.9606,
"walk_factor": 1.032,
"homer_factor": 1.0482,
"woba_minus_xwoba": -0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "671096",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0378,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 1.0378,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 1.032,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0482,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9606,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 5,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 8,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 19,
"Pitches": 81,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +8 outs from the projected workload."
},
{
"code": "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/20260923_CIN@ATL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_CIN@ATL | home | Chris Sale | Chris Sale | True | 6.1 | 5.2 | -2 | 2 | 1 | -1 | 3/4 | 2/0 | 5/10 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.178343949044586,
"WHIP": 0.9936305732484076,
"IP": 157.0,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 6.038,
"recent_avg_IP": 6.8,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.6599,
"sample_weight": 1.0,
"run_prevention_factor": 0.9439,
"strikeout_factor": 1.0754,
"walk_factor": 0.916,
"homer_factor": 0.9303,
"regression_flag": "neutral",
"k_percent": 30.3,
"bb_percent": 4.9,
"woba": 0.259,
"xwoba": 0.271,
"barrel_percent": 6.1,
"hard_hit_percent": 35.2,
"whiff_percent": 29.9
},
"espn_rank": {
"rank": 9,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "519242",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 34.0,
"ER": 8.0,
"R": 8.0,
"H": 27.0,
"BB": 3.0,
"SO": 39.0,
"HR": 1.0,
"BF": 133.0,
"Pitches": 508.0
},
"per_game": {
"IP": 6.2,
"ER": 1.6,
"R": 1.6,
"H": 5.4,
"BB": 0.6,
"SO": 7.8,
"HR": 0.2,
"BF": 26.6,
"Pitches": 101.6
},
"rates": {
"ERA": 2.1176,
"WHIP": 0.8824,
"ER_per_IP": 0.23529,
"H_per_IP": 0.79412,
"BB_per_IP": 0.08824,
"SO_per_IP": 1.14706,
"HR_per_IP": 0.02941
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 62.0,
"ER": 14.0,
"R": 14.0,
"H": 43.0,
"BB": 7.0,
"SO": 78.0,
"HR": 1.0,
"BF": 235.0,
"Pitches": 935.0
},
"per_game": {
"IP": 6.1,
"ER": 1.4,
"R": 1.4,
"H": 4.3,
"BB": 0.7,
"SO": 7.8,
"HR": 0.1,
"BF": 23.5,
"Pitches": 93.5
},
"rates": {
"ERA": 2.0323,
"WHIP": 0.8065,
"ER_per_IP": 0.22581,
"H_per_IP": 0.69355,
"BB_per_IP": 0.1129,
"SO_per_IP": 1.25806,
"HR_per_IP": 0.01613
}
},
"season": {
"games": 26,
"totals": {
"IP": 157.0,
"ER": 38.0,
"R": 43.0,
"H": 125.0,
"BB": 31.0,
"SO": 190.0,
"HR": 9.0,
"BF": 627.0,
"Pitches": 2477.0
},
"per_game": {
"IP": 6.0,
"ER": 1.4615,
"R": 1.6538,
"H": 4.8077,
"BB": 1.1923,
"SO": 7.3077,
"HR": 0.3462,
"BF": 24.1154,
"Pitches": 95.2692
},
"rates": {
"ERA": 2.1783,
"WHIP": 0.9936,
"ER_per_IP": 0.24204,
"H_per_IP": 0.79618,
"BB_per_IP": 0.19745,
"SO_per_IP": 1.21019,
"HR_per_IP": 0.05732
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 1.779,
"predicted_H": 5.09,
"predicted_BB": 1.027,
"predicted_SO": 7.405,
"predicted_HR": 0.316,
"predicted_ERA": 2.501,
"predicted_WHIP": 0.9553
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4181,
"form_weight": 0.5819,
"form_reliability": 0.8387,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"applied_metrics": {
"predicted_IP": {
"model": 6.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 1.779,
"final": 2.7077,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.09,
"final": 5.4705,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.027,
"final": 1.4339,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 7.405,
"final": 5.1449,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.316,
"final": 0.1839,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.501,
"final": 2.501,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.9553,
"final": 0.9553,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 62.0,
"ER": 14,
"H": 43,
"BB": 7,
"SO": 78,
"HR": 1,
"ERA": 2.032258064516129,
"WHIP": 0.8064516129032258,
"K9": 11.32258064516129,
"HR9": 0.14516129032258066,
"games_pitched": 10,
"quality_starts": 9,
"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-11T00:00:00"
},
"recent_form_boost": 0.7125041160203904,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_BB": 2.0,
"predicted_SO": 2.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.1,
"predicted_ER": 2,
"predicted_H": 6,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "519242",
"player_name": "Chris Sale",
"position": "Starter",
"team": "ATL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.3333,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 6.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": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 2.0,
"after": 7.0,
"delta": 5.0,
"percent_delta": 2.5,
"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": 2.0,
"after": 7.0,
"delta": 5.0,
"percent_delta": 2.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_R": 2.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": 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": 3.0,
"delta": -3.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.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": 5.0,
"delta": -2.0,
"percent_delta": -0.2857,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 0,
"deboosted_metrics": 2,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_H",
"before": 6.0,
"after": 3.0,
"delta": -3.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 3.0,
"delta": -3.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 5.0,
"delta": 3.0,
"percent_delta": 1.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 4,
"boosted_metrics": 1,
"deboosted_metrics": 3,
"better_metrics": 3,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 5.0,
"delta": 3.0,
"percent_delta": 1.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_H",
"before": 6.0,
"after": 3.0,
"delta": -3.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": "ATL",
"games": 157,
"wins": 92,
"losses": 65,
"win_pct": 0.586,
"runs_scored": 722.0,
"runs_allowed": 606.0,
"run_differential": 116.0,
"run_differential_per_game": 0.7389,
"avg_runs_scored": 4.5987,
"avg_runs_allowed": 3.8599,
"offense_index": 1.0265,
"defense_index": 1.1607,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.1,
"avg_runs_allowed": 4.5,
"run_differential": 6.0
},
"available": true,
"quality_score": 0.1988
},
"opponent": {
"team": "CIN",
"games": 157,
"wins": 73,
"losses": 84,
"win_pct": 0.465,
"runs_scored": 646.0,
"runs_allowed": 805.0,
"run_differential": -159.0,
"run_differential_per_game": -1.0127,
"avg_runs_scored": 4.1146,
"avg_runs_allowed": 5.1274,
"offense_index": 0.9184,
"defense_index": 0.8738,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.5,
"avg_runs_allowed": 5.2,
"run_differential": -17.0
},
"available": true,
"quality_score": -0.1891
},
"edges": {
"quality_edge": 0.3879,
"offense_edge": 0.0265,
"opponent_offense_edge": -0.0816,
"defense_strength": 0.1607,
"opponent_defense_weakness": 0.1262,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0236,
"run_prevention": 0.9515,
"strikeout": 1.0182
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "519242",
"profile": {
"available": true,
"pitcher_id": "519242",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 575.0,
"k_percent": 30.3,
"bb_percent": 4.9,
"woba": 0.259,
"xwoba": 0.271,
"sweet_spot_percent": 34.4,
"barrel_batted_rate": 6.1,
"hard_hit_percent": 35.2,
"avg_best_speed": 77.0619,
"avg_hyper_speed": 93.4771,
"whiff_percent": 29.9,
"swing_percent": 50.5
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.7892,
"command_and_miss": 0.99,
"regression_edge": -0.3429,
"xwoba_edge": 1.1571,
"barrel_edge": 0.2444,
"hard_hit_edge": 0.3857,
"whiff_edge": 0.6857,
"bb_edge": 1.05,
"pitch_design_score": -0.0645
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "519242",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 103,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 103,
"pitch_usage": 0.0,
"release_speed": 88.7123798188993,
"release_spin_rate": 2355.026241900336,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 103,
"pitch_usage": 0.0,
"release_speed": 88.7123798188993,
"release_spin_rate": 2355.026241900336,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 88.7124,
"release_spin_rate": 2355.0262,
"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.0645,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4605,
"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.6599,
"sample_weight": 1.0,
"run_prevention_factor": 0.9439,
"strikeout_factor": 1.0754,
"walk_factor": 0.916,
"homer_factor": 0.9303,
"woba_minus_xwoba": -0.012,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "519242",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9439,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9439,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.916,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9303,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0754,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 102,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "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/20260923_CIN@ATL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_CLE@BOS | away | Foster Griffin | Foster Griffin | True | 5.1 | 6.0 | 2 | 4 | 1 | -3 | 4/10 | 3/0 | 6/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.672,
"WHIP": 1.1940000000000002,
"IP": 166.2,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.556,
"recent_avg_IP": 4.467,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0994,
"sample_weight": 1.0,
"run_prevention_factor": 1.0085,
"strikeout_factor": 0.988,
"walk_factor": 0.948,
"homer_factor": 1.0275,
"regression_flag": "neutral",
"k_percent": 21.8,
"bb_percent": 6.5,
"woba": 0.311,
"xwoba": 0.32,
"barrel_percent": 8.5,
"hard_hit_percent": 37.4,
"whiff_percent": 23.1
},
"espn_rank": {
"rank": 38,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "656492",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.1,
"ER": 17.0,
"R": 17.0,
"H": 29.0,
"BB": 10.0,
"SO": 20.0,
"HR": 0.0,
"BF": 104.0,
"Pitches": 424.0
},
"per_game": {
"IP": 4.1,
"ER": 3.4,
"R": 3.4,
"H": 5.8,
"BB": 2.0,
"SO": 4.0,
"HR": 0.0,
"BF": 20.8,
"Pitches": 84.8
},
"rates": {
"ERA": 6.8507,
"WHIP": 1.7463,
"ER_per_IP": 0.76119,
"H_per_IP": 1.29851,
"BB_per_IP": 0.44776,
"SO_per_IP": 0.89552,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.1,
"ER": 33.0,
"R": 35.0,
"H": 60.0,
"BB": 18.0,
"SO": 40.0,
"HR": 6.0,
"BF": 220.0,
"Pitches": 882.0
},
"per_game": {
"IP": 5.0,
"ER": 3.3,
"R": 3.5,
"H": 6.0,
"BB": 1.8,
"SO": 4.0,
"HR": 0.6,
"BF": 22.0,
"Pitches": 88.2
},
"rates": {
"ERA": 6.0203,
"WHIP": 1.5811,
"ER_per_IP": 0.66892,
"H_per_IP": 1.21622,
"BB_per_IP": 0.36486,
"SO_per_IP": 0.81081,
"HR_per_IP": 0.12162
}
},
"season": {
"games": 30,
"totals": {
"IP": 166.2,
"ER": 68.0,
"R": 75.0,
"H": 154.0,
"BB": 45.0,
"SO": 151.0,
"HR": 23.0,
"BF": 693.0,
"Pitches": 2750.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2667,
"R": 2.5,
"H": 5.1333,
"BB": 1.5,
"SO": 5.0333,
"HR": 0.7667,
"BF": 23.1,
"Pitches": 91.6667
},
"rates": {
"ERA": 3.672,
"WHIP": 1.194,
"ER_per_IP": 0.408,
"H_per_IP": 0.924,
"BB_per_IP": 0.27,
"SO_per_IP": 0.906,
"HR_per_IP": 0.138
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 3.124,
"predicted_H": 5.71,
"predicted_BB": 1.875,
"predicted_SO": 4.306,
"predicted_HR": 0.399,
"predicted_ERA": 5.7332,
"predicted_WHIP": 1.5464
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.0,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 3.124,
"final": 3.0731,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.71,
"final": 5.0083,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.875,
"final": 2.3367,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.306,
"final": 4.5908,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.399,
"final": 0.6456,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.7332,
"final": 5.7332,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5464,
"final": 1.5464,
"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": 33,
"H": 60,
"BB": 18,
"SO": 40,
"HR": 6,
"ERA": 6.02027027027027,
"WHIP": 1.581081081081081,
"K9": 7.297297297297297,
"HR9": 1.0945945945945945,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 1.1805212258721776,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_BB": 3.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": "656492",
"player_name": "Foster Griffin",
"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": 3.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.3333,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CLE",
"games": 157,
"wins": 82,
"losses": 75,
"win_pct": 0.5223,
"runs_scored": 652.0,
"runs_allowed": 649.0,
"run_differential": 3.0,
"run_differential_per_game": 0.0191,
"avg_runs_scored": 4.1529,
"avg_runs_allowed": 4.1338,
"offense_index": 0.9269,
"defense_index": 1.0838,
"current_streak": "W6",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 3.5,
"run_differential": 19.0
},
"available": true,
"quality_score": 0.1263
},
"opponent": {
"team": "BOS",
"games": 157,
"wins": 84,
"losses": 73,
"win_pct": 0.535,
"runs_scored": 680.0,
"runs_allowed": 601.0,
"run_differential": 79.0,
"run_differential_per_game": 0.5032,
"avg_runs_scored": 4.3312,
"avg_runs_allowed": 3.828,
"offense_index": 0.9668,
"defense_index": 1.1704,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.8,
"avg_runs_allowed": 3.1,
"run_differential": -3.0
},
"available": true,
"quality_score": 0.0565
},
"edges": {
"quality_edge": 0.0698,
"offense_edge": -0.0731,
"opponent_offense_edge": -0.0332,
"defense_strength": 0.0838,
"opponent_defense_weakness": -0.1704,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0066,
"run_prevention": 0.9828,
"strikeout": 1.0048
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "656492",
"profile": {
"available": true,
"pitcher_id": "656492",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 669.0,
"k_percent": 21.8,
"bb_percent": 6.5,
"woba": 0.311,
"xwoba": 0.32,
"sweet_spot_percent": 36.3,
"barrel_batted_rate": 8.5,
"hard_hit_percent": 37.4,
"avg_best_speed": 76.2193,
"avg_hyper_speed": 94.0188,
"whiff_percent": 23.1,
"swing_percent": 48.2
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.1118,
"command_and_miss": 0.0236,
"regression_edge": -0.2571,
"xwoba_edge": -0.2429,
"barrel_edge": -0.2889,
"hard_hit_edge": 0.0714,
"whiff_edge": -0.2857,
"bb_edge": 0.65,
"pitch_design_score": -0.2153
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "656492",
"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": 86.01981218316948,
"release_spin_rate": 2149.763694103009,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 86.01981218316948,
"release_spin_rate": 2149.763694103009,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.0198,
"release_spin_rate": 2149.7637,
"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.2153,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.5375,
"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.0994,
"sample_weight": 1.0,
"run_prevention_factor": 1.0085,
"strikeout_factor": 0.988,
"walk_factor": 0.948,
"homer_factor": 1.0275,
"woba_minus_xwoba": -0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "656492",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0085,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0085,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.948,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0275,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.988,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"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": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 6",
"detail": "Actual minus predicted hits was +6."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260923_CLE@BOS.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_CLE@BOS | home | Sonny Gray | Sonny Gray | True | 6.0 | 6.0 | 0 | 3 | 0 | -3 | 6/4 | 3/1 | 6/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.815950920245399,
"WHIP": 1.1595092024539877,
"IP": 163.0,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.821,
"recent_avg_IP": 6.067,
"last_start_IP": 6.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0628,
"sample_weight": 1.0,
"run_prevention_factor": 0.9947,
"strikeout_factor": 0.9909,
"walk_factor": 0.954,
"homer_factor": 0.9953,
"regression_flag": "neutral",
"k_percent": 22.1,
"bb_percent": 6.8,
"woba": 0.297,
"xwoba": 0.302,
"barrel_percent": 7.2,
"hard_hit_percent": 38.5,
"whiff_percent": 23.3
},
"espn_rank": {
"rank": 18,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "543243",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.1,
"ER": 12.0,
"R": 12.0,
"H": 26.0,
"BB": 11.0,
"SO": 29.0,
"HR": 3.0,
"BF": 125.0,
"Pitches": 474.0
},
"per_game": {
"IP": 6.0,
"ER": 2.4,
"R": 2.4,
"H": 5.2,
"BB": 2.2,
"SO": 5.8,
"HR": 0.6,
"BF": 25.0,
"Pitches": 94.8
},
"rates": {
"ERA": 3.5604,
"WHIP": 1.2198,
"ER_per_IP": 0.3956,
"H_per_IP": 0.85714,
"BB_per_IP": 0.36264,
"SO_per_IP": 0.95604,
"HR_per_IP": 0.0989
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.1,
"ER": 23.0,
"R": 23.0,
"H": 58.0,
"BB": 17.0,
"SO": 56.0,
"HR": 5.0,
"BF": 253.0,
"Pitches": 914.0
},
"per_game": {
"IP": 6.0,
"ER": 2.3,
"R": 2.3,
"H": 5.8,
"BB": 1.7,
"SO": 5.6,
"HR": 0.5,
"BF": 25.3,
"Pitches": 91.4
},
"rates": {
"ERA": 3.375,
"WHIP": 1.2228,
"ER_per_IP": 0.375,
"H_per_IP": 0.94565,
"BB_per_IP": 0.27717,
"SO_per_IP": 0.91304,
"HR_per_IP": 0.08152
}
},
"season": {
"games": 28,
"totals": {
"IP": 163.0,
"ER": 51.0,
"R": 52.0,
"H": 144.0,
"BB": 45.0,
"SO": 146.0,
"HR": 16.0,
"BF": 661.0,
"Pitches": 2397.0
},
"per_game": {
"IP": 5.2,
"ER": 1.8214,
"R": 1.8571,
"H": 5.1429,
"BB": 1.6071,
"SO": 5.2143,
"HR": 0.5714,
"BF": 23.6071,
"Pitches": 85.6071
},
"rates": {
"ERA": 2.816,
"WHIP": 1.1595,
"ER_per_IP": 0.31288,
"H_per_IP": 0.88344,
"BB_per_IP": 0.27607,
"SO_per_IP": 0.89571,
"HR_per_IP": 0.09816
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.334,
"predicted_H": 5.388,
"predicted_BB": 1.93,
"predicted_SO": 5.529,
"predicted_HR": 0.601,
"predicted_ERA": 3.5345,
"predicted_WHIP": 1.2312
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.414,
"form_weight": 0.586,
"form_reliability": 0.8485,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.334,
"final": 3.0237,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.388,
"final": 5.6414,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.93,
"final": 2.373,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 5.529,
"final": 4.896,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.601,
"final": 0.3522,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.5345,
"final": 3.5345,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2312,
"final": 1.2312,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 61.1,
"ER": 23,
"H": 58,
"BB": 17,
"SO": 56,
"HR": 5,
"ERA": 3.3750000000000004,
"WHIP": 1.2228260869565217,
"K9": 8.217391304347826,
"HR9": 0.7336956521739131,
"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-17T00:00:00"
},
"recent_form_boost": 0.8739719456136583,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_BB": 3.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3,
"predicted_H": 6,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "543243",
"player_name": "Sonny Gray",
"position": "Starter",
"team": "BOS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 2,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 2,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BOS",
"games": 157,
"wins": 84,
"losses": 73,
"win_pct": 0.535,
"runs_scored": 680.0,
"runs_allowed": 601.0,
"run_differential": 79.0,
"run_differential_per_game": 0.5032,
"avg_runs_scored": 4.3312,
"avg_runs_allowed": 3.828,
"offense_index": 0.9668,
"defense_index": 1.1704,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.8,
"avg_runs_allowed": 3.1,
"run_differential": -3.0
},
"available": true,
"quality_score": 0.0565
},
"opponent": {
"team": "CLE",
"games": 157,
"wins": 82,
"losses": 75,
"win_pct": 0.5223,
"runs_scored": 652.0,
"runs_allowed": 649.0,
"run_differential": 3.0,
"run_differential_per_game": 0.0191,
"avg_runs_scored": 4.1529,
"avg_runs_allowed": 4.1338,
"offense_index": 0.9269,
"defense_index": 1.0838,
"current_streak": "W6",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 3.5,
"run_differential": 19.0
},
"available": true,
"quality_score": 0.1263
},
"edges": {
"quality_edge": -0.0698,
"offense_edge": -0.0332,
"opponent_offense_edge": -0.0731,
"defense_strength": 0.1704,
"opponent_defense_weakness": -0.0838,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 1.0052,
"run_prevention": 0.9748,
"strikeout": 1.0038
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "543243",
"profile": {
"available": true,
"pitcher_id": "543243",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 631.0,
"k_percent": 22.1,
"bb_percent": 6.8,
"woba": 0.297,
"xwoba": 0.302,
"sweet_spot_percent": 34.4,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 38.5,
"avg_best_speed": 78.9436,
"avg_hyper_speed": 93.9353,
"whiff_percent": 23.3,
"swing_percent": 47.4
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1398,
"command_and_miss": 0.0379,
"regression_edge": -0.1429,
"xwoba_edge": 0.2714,
"barrel_edge": 0.0,
"hard_hit_edge": -0.0857,
"whiff_edge": -0.2571,
"bb_edge": 0.575,
"pitch_design_score": -0.1376
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "543243",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 91,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 91,
"pitch_usage": 0.0,
"release_speed": 87.40671359710561,
"release_spin_rate": 2505.690298803869,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 91,
"pitch_usage": 0.0,
"release_speed": 87.40671359710561,
"release_spin_rate": 2505.690298803869,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.4067,
"release_spin_rate": 2505.6903,
"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.1376,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.9828,
"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.0628,
"sample_weight": 1.0,
"run_prevention_factor": 0.9947,
"strikeout_factor": 0.9909,
"walk_factor": 0.954,
"homer_factor": 0.9953,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "543243",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9947,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9947,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.954,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9953,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 0.9909,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 27,
"Pitches": 118,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
}
],
"provenance": {
"prediction": "output/games/20260923_CLE@BOS.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_HOU@SEA | away | Ethan Pecko | Ethan Pecko | True | 5.0 | 2.2 | -7 | 0 | 3 | 3 | 4/4 | 2/2 | 8/2 | Last 10 before this game (6 available){
"model_context": {
"embedded_season": {
"ERA": 3.7674418604651163,
"WHIP": 1.1162790697674418,
"IP": 28.2,
"games_started": null,
"games_pitched": 6,
"role_avg_IP": 4.333,
"recent_avg_IP": 4.333,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1851,
"sample_weight": 0.45,
"run_prevention_factor": 1.0157,
"strikeout_factor": 0.9784,
"walk_factor": 1.0108,
"homer_factor": 1.0317,
"regression_flag": "negative_pitcher_regression",
"k_percent": 16.4,
"bb_percent": 10.3,
"woba": 0.301,
"xwoba": 0.335,
"barrel_percent": 9.8,
"hard_hit_percent": 38.6,
"whiff_percent": 22.2
},
"espn_rank": {
"rank": 292,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 28.2,
"season_ERA": 3.767,
"season_WHIP": 1.116,
"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.8653846153846154,
"last_10": 0.1346153846153846
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5455,
"prior_weight": 0.4545
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "814490",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 6,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 10.0,
"R": 11.0,
"H": 17.0,
"BB": 9.0,
"SO": 15.0,
"HR": 5.0,
"BF": 98.0,
"Pitches": 398.0
},
"per_game": {
"IP": 5.0,
"ER": 2.0,
"R": 2.2,
"H": 3.4,
"BB": 1.8,
"SO": 3.0,
"HR": 1.0,
"BF": 19.6,
"Pitches": 79.6
},
"rates": {
"ERA": 3.6,
"WHIP": 1.04,
"ER_per_IP": 0.4,
"H_per_IP": 0.68,
"BB_per_IP": 0.36,
"SO_per_IP": 0.6,
"HR_per_IP": 0.2
}
},
"last_10": {
"games": 6,
"totals": {
"IP": 28.2,
"ER": 12.0,
"R": 13.0,
"H": 20.0,
"BB": 12.0,
"SO": 19.0,
"HR": 5.0,
"BF": 116.0,
"Pitches": 487.0
},
"per_game": {
"IP": 4.2,
"ER": 2.0,
"R": 2.1667,
"H": 3.3333,
"BB": 2.0,
"SO": 3.1667,
"HR": 0.8333,
"BF": 19.3333,
"Pitches": 81.1667
},
"rates": {
"ERA": 3.7674,
"WHIP": 1.1163,
"ER_per_IP": 0.4186,
"H_per_IP": 0.69767,
"BB_per_IP": 0.4186,
"SO_per_IP": 0.66279,
"HR_per_IP": 0.17442
}
},
"season": {
"games": 6,
"totals": {
"IP": 28.2,
"ER": 12.0,
"R": 13.0,
"H": 20.0,
"BB": 12.0,
"SO": 19.0,
"HR": 5.0,
"BF": 116.0,
"Pitches": 487.0
},
"per_game": {
"IP": 4.2,
"ER": 2.0,
"R": 2.1667,
"H": 3.3333,
"BB": 2.0,
"SO": 3.1667,
"HR": 0.8333,
"BF": 19.3333,
"Pitches": 81.1667
},
"rates": {
"ERA": 3.7674,
"WHIP": 1.1163,
"ER_per_IP": 0.4186,
"H_per_IP": 0.69767,
"BB_per_IP": 0.4186,
"SO_per_IP": 0.66279,
"HR_per_IP": 0.17442
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.245,
"predicted_H": 4.069,
"predicted_BB": 1.85,
"predicted_SO": 3.771,
"predicted_HR": 0.869,
"predicted_ERA": 4.0608,
"predicted_WHIP": 1.1896
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.542,
"form_weight": 0.458,
"form_reliability": 0.5455,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5455,
"prior_weight": 0.4545
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 0.0,
"form": 2.245,
"final": 1.0282,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.069,
"final": 4.0316,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.85,
"final": 1.9313,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 3.771,
"final": 6.0632,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.869,
"final": 0.398,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.0608,
"final": 4.0608,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1896,
"final": 1.1896,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 28.2,
"ER": 12,
"H": 20,
"BB": 12,
"SO": 19,
"HR": 5,
"ERA": 3.7674418604651163,
"WHIP": 1.1162790697674418,
"K9": 5.965116279069767,
"HR9": 1.569767441860465,
"games_pitched": 6,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 6,
"error_prone": false
},
"games_count": 6,
"latest_game_date": "2026-09-17T00:00:00"
},
"recent_form_boost": 0.9197564002165157,
"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": 2.0,
"predicted_SO": 8.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5455,
"prior_weight": 0.4545
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 0,
"predicted_H": 4,
"predicted_BB": 2,
"predicted_SO": 8,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "814490",
"player_name": "Ethan Pecko",
"position": "Starter",
"team": "HOU",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 0.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 8.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": 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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 0.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 0.0,
"predicted_SO": 8.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": 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": 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": 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": 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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "HOU",
"games": 157,
"wins": 78,
"losses": 79,
"win_pct": 0.4968,
"runs_scored": 695.0,
"runs_allowed": 747.0,
"run_differential": -52.0,
"run_differential_per_game": -0.3312,
"avg_runs_scored": 4.4268,
"avg_runs_allowed": 4.758,
"offense_index": 0.9869,
"defense_index": 0.9427,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 4.5,
"run_differential": -12.0
},
"available": true,
"quality_score": -0.1133
},
"opponent": {
"team": "SEA",
"games": 157,
"wins": 73,
"losses": 84,
"win_pct": 0.465,
"runs_scored": 634.0,
"runs_allowed": 697.0,
"run_differential": -63.0,
"run_differential_per_game": -0.4013,
"avg_runs_scored": 4.0382,
"avg_runs_allowed": 4.4395,
"offense_index": 0.9003,
"defense_index": 1.0103,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 4.2,
"run_differential": 11.0
},
"available": true,
"quality_score": -0.114
},
"edges": {
"quality_edge": 0.0007,
"offense_edge": -0.0131,
"opponent_offense_edge": -0.0997,
"defense_strength": -0.0573,
"opponent_defense_weakness": -0.0103,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0023,
"run_prevention": 0.9897,
"strikeout": 1.008
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "814490",
"profile": {
"available": true,
"pitcher_id": "814490",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 95.0,
"k_percent": 16.4,
"bb_percent": 10.3,
"woba": 0.301,
"xwoba": 0.335,
"sweet_spot_percent": 31.3,
"barrel_batted_rate": 9.8,
"hard_hit_percent": 38.6,
"avg_best_speed": 78.46,
"avg_hyper_speed": 94.301,
"whiff_percent": 22.2,
"swing_percent": 45.4
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2937,
"command_and_miss": -0.5586,
"regression_edge": -0.9714,
"xwoba_edge": -0.6714,
"barrel_edge": -0.5778,
"hard_hit_edge": -0.1,
"whiff_edge": -0.4143,
"bb_edge": -0.3,
"pitch_design_score": -0.0555
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "814490",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 83,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 83,
"pitch_usage": 0.0,
"release_speed": 88.87197185297008,
"release_spin_rate": 2284.8833648498585,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 83,
"pitch_usage": 0.0,
"release_speed": 88.87197185297008,
"release_spin_rate": 2284.8833648498585,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.872,
"release_spin_rate": 2284.8834,
"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.0555,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.3967,
"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.1851,
"sample_weight": 0.45,
"run_prevention_factor": 1.0157,
"strikeout_factor": 0.9784,
"walk_factor": 1.0108,
"homer_factor": 1.0317,
"woba_minus_xwoba": -0.034,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "814490",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0071,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 1.0071,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.0049,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0143,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9903,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 0,
"predicted_ER": 0,
"predicted_BB": 2,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 95,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 6 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was +3."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -7 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260923_HOU@SEA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_HOU@SEA | home | George Kirby | George Kirby | True | 6.0 | 5.0 | -3 | 2 | 4 | 2 | 6/6 | 1/3 | 8/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.243614931237722,
"WHIP": 1.3850687622789786,
"IP": 169.2,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.851,
"recent_avg_IP": 5.933,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0543,
"sample_weight": 1.0,
"run_prevention_factor": 1.0046,
"strikeout_factor": 0.9731,
"walk_factor": 0.94,
"homer_factor": 1.0043,
"regression_flag": "neutral",
"k_percent": 19.9,
"bb_percent": 6.1,
"woba": 0.338,
"xwoba": 0.315,
"barrel_percent": 6.6,
"hard_hit_percent": 40.0,
"whiff_percent": 22.4
},
"espn_rank": {
"rank": 125,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "669923",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.2,
"ER": 15.0,
"R": 16.0,
"H": 34.0,
"BB": 11.0,
"SO": 26.0,
"HR": 4.0,
"BF": 131.0,
"Pitches": 472.0
},
"per_game": {
"IP": 6.0,
"ER": 3.0,
"R": 3.2,
"H": 6.8,
"BB": 2.2,
"SO": 5.2,
"HR": 0.8,
"BF": 26.2,
"Pitches": 94.4
},
"rates": {
"ERA": 4.5506,
"WHIP": 1.5169,
"ER_per_IP": 0.50562,
"H_per_IP": 1.14607,
"BB_per_IP": 0.37079,
"SO_per_IP": 0.8764,
"HR_per_IP": 0.13483
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.2,
"ER": 34.0,
"R": 35.0,
"H": 67.0,
"BB": 19.0,
"SO": 39.0,
"HR": 10.0,
"BF": 241.0,
"Pitches": 914.0
},
"per_game": {
"IP": 5.1,
"ER": 3.4,
"R": 3.5,
"H": 6.7,
"BB": 1.9,
"SO": 3.9,
"HR": 1.0,
"BF": 24.1,
"Pitches": 91.4
},
"rates": {
"ERA": 5.7019,
"WHIP": 1.6025,
"ER_per_IP": 0.63354,
"H_per_IP": 1.24845,
"BB_per_IP": 0.35404,
"SO_per_IP": 0.72671,
"HR_per_IP": 0.18634
}
},
"season": {
"games": 29,
"totals": {
"IP": 169.2,
"ER": 80.0,
"R": 85.0,
"H": 191.0,
"BB": 44.0,
"SO": 143.0,
"HR": 21.0,
"BF": 718.0,
"Pitches": 2662.0
},
"per_game": {
"IP": 6.0,
"ER": 2.7586,
"R": 2.931,
"H": 6.5862,
"BB": 1.5172,
"SO": 4.931,
"HR": 0.7241,
"BF": 24.7586,
"Pitches": 91.7931
},
"rates": {
"ERA": 4.2436,
"WHIP": 1.3851,
"ER_per_IP": 0.47151,
"H_per_IP": 1.12574,
"BB_per_IP": 0.25933,
"SO_per_IP": 0.84283,
"HR_per_IP": 0.12377
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 3.124,
"predicted_H": 6.664,
"predicted_BB": 2.017,
"predicted_SO": 4.844,
"predicted_HR": 0.872,
"predicted_ERA": 4.8472,
"predicted_WHIP": 1.4964
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4121,
"form_weight": 0.5879,
"form_reliability": 0.8529,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 3.124,
"final": 2.6607,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 6.664,
"final": 6.3903,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.017,
"final": 1.5978,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.844,
"final": 4.9083,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.872,
"final": 0.9248,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.8472,
"final": 4.8472,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4964,
"final": 1.4964,
"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": 34,
"H": 67,
"BB": 19,
"SO": 39,
"HR": 10,
"ERA": 5.7018633540372665,
"WHIP": 1.6024844720496894,
"K9": 6.540372670807453,
"HR9": 1.6770186335403725,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-16T00:00:00"
},
"recent_form_boost": 1.14523553257018,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 5.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669923",
"player_name": "George Kirby",
"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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 8.0,
"delta": 3.0,
"percent_delta": 0.6,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SEA",
"games": 157,
"wins": 73,
"losses": 84,
"win_pct": 0.465,
"runs_scored": 634.0,
"runs_allowed": 697.0,
"run_differential": -63.0,
"run_differential_per_game": -0.4013,
"avg_runs_scored": 4.0382,
"avg_runs_allowed": 4.4395,
"offense_index": 0.9003,
"defense_index": 1.0103,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 4.2,
"run_differential": 11.0
},
"available": true,
"quality_score": -0.114
},
"opponent": {
"team": "HOU",
"games": 157,
"wins": 78,
"losses": 79,
"win_pct": 0.4968,
"runs_scored": 695.0,
"runs_allowed": 747.0,
"run_differential": -52.0,
"run_differential_per_game": -0.3312,
"avg_runs_scored": 4.4268,
"avg_runs_allowed": 4.758,
"offense_index": 0.9869,
"defense_index": 0.9427,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.3,
"avg_runs_allowed": 4.5,
"run_differential": -12.0
},
"available": true,
"quality_score": -0.1133
},
"edges": {
"quality_edge": -0.0007,
"offense_edge": -0.0997,
"opponent_offense_edge": -0.0131,
"defense_strength": 0.0103,
"opponent_defense_weakness": 0.0573,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0008,
"run_prevention": 0.9969,
"strikeout": 1.001
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669923",
"profile": {
"available": true,
"pitcher_id": "669923",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 691.0,
"k_percent": 19.9,
"bb_percent": 6.1,
"woba": 0.338,
"xwoba": 0.315,
"sweet_spot_percent": 33.0,
"barrel_batted_rate": 6.6,
"hard_hit_percent": 40.0,
"avg_best_speed": 79.17,
"avg_hyper_speed": 94.1506,
"whiff_percent": 22.4,
"swing_percent": 51.8
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.1784,
"command_and_miss": -0.1136,
"regression_edge": 0.6571,
"xwoba_edge": -0.1,
"barrel_edge": 0.1333,
"hard_hit_edge": -0.3,
"whiff_edge": -0.3857,
"bb_edge": 0.75,
"pitch_design_score": 0.1179
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669923",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 93,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 91.96952767159299,
"release_spin_rate": 2257.4159200004274,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 91.96952767159299,
"release_spin_rate": 2257.4159200004274,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.9695,
"release_spin_rate": 2257.4159,
"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.1179,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.8423,
"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.0543,
"sample_weight": 1.0,
"run_prevention_factor": 1.0046,
"strikeout_factor": 0.9731,
"walk_factor": 0.94,
"homer_factor": 1.0043,
"woba_minus_xwoba": 0.023,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669923",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0046,
"adjusted": 3
},
"predicted_H": {
"original": 7.0,
"factor": 1.0046,
"adjusted": 7
},
"predicted_BB": {
"original": 2.0,
"factor": 0.94,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0043,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9731,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 6,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 8,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 25,
"Pitches": 110,
"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/20260923_HOU@SEA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_LAA@OAK | away | Walbert Ureña | Walbert Ureña | True | 6.0 | 4.0 | -6 | 3 | 5 | 2 | 3/7 | 4/1 | 6/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.74364896073903,
"WHIP": 1.20554272517321,
"IP": 144.1,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 5.487,
"recent_avg_IP": 6.333,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4603,
"sample_weight": 1.0,
"run_prevention_factor": 0.9609,
"strikeout_factor": 1.0223,
"walk_factor": 1.04,
"homer_factor": 0.9287,
"regression_flag": "neutral",
"k_percent": 23.1,
"bb_percent": 11.1,
"woba": 0.274,
"xwoba": 0.281,
"barrel_percent": 5.4,
"hard_hit_percent": 35.6,
"whiff_percent": 27.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": 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": "700712",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.2,
"ER": 9.0,
"R": 9.0,
"H": 26.0,
"BB": 8.0,
"SO": 31.0,
"HR": 2.0,
"BF": 126.0,
"Pitches": 464.0
},
"per_game": {
"IP": 6.1,
"ER": 1.8,
"R": 1.8,
"H": 5.2,
"BB": 1.6,
"SO": 6.2,
"HR": 0.4,
"BF": 25.2,
"Pitches": 92.8
},
"rates": {
"ERA": 2.5579,
"WHIP": 1.0737,
"ER_per_IP": 0.28421,
"H_per_IP": 0.82105,
"BB_per_IP": 0.25263,
"SO_per_IP": 0.97895,
"HR_per_IP": 0.06316
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 57.0,
"ER": 17.0,
"R": 17.0,
"H": 40.0,
"BB": 20.0,
"SO": 57.0,
"HR": 4.0,
"BF": 227.0,
"Pitches": 889.0
},
"per_game": {
"IP": 5.2,
"ER": 1.7,
"R": 1.7,
"H": 4.0,
"BB": 2.0,
"SO": 5.7,
"HR": 0.4,
"BF": 22.7,
"Pitches": 88.9
},
"rates": {
"ERA": 2.6842,
"WHIP": 1.0526,
"ER_per_IP": 0.29825,
"H_per_IP": 0.70175,
"BB_per_IP": 0.35088,
"SO_per_IP": 1.0,
"HR_per_IP": 0.07018
}
},
"season": {
"games": 28,
"totals": {
"IP": 144.1,
"ER": 44.0,
"R": 51.0,
"H": 107.0,
"BB": 67.0,
"SO": 140.0,
"HR": 9.0,
"BF": 605.0,
"Pitches": 2400.0
},
"per_game": {
"IP": 5.0,
"ER": 1.5714,
"R": 1.8214,
"H": 3.8214,
"BB": 2.3929,
"SO": 5.0,
"HR": 0.3214,
"BF": 21.6071,
"Pitches": 85.7143
},
"rates": {
"ERA": 2.7436,
"WHIP": 1.2055,
"ER_per_IP": 0.30485,
"H_per_IP": 0.74134,
"BB_per_IP": 0.4642,
"SO_per_IP": 0.96998,
"HR_per_IP": 0.06236
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.91,
"predicted_H": 4.665,
"predicted_BB": 1.971,
"predicted_SO": 5.726,
"predicted_HR": 0.457,
"predicted_ERA": 2.9343,
"predicted_WHIP": 1.1327
}
},
"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": 1.91,
"final": 2.3613,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.665,
"final": 3.9757,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.971,
"final": 2.811,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 5.726,
"final": 5.0114,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.457,
"final": 0.2678,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.9343,
"final": 2.9343,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1327,
"final": 1.1327,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 57.0,
"ER": 17,
"H": 40,
"BB": 20,
"SO": 57,
"HR": 4,
"ERA": 2.6842105263157894,
"WHIP": 1.0526315789473684,
"K9": 9.0,
"HR9": 0.631578947368421,
"games_pitched": 10,
"quality_starts": 6,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-17T00:00:00"
},
"recent_form_boost": 0.7920032671239557,
"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": 3.0,
"predicted_BB": 4.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3,
"predicted_H": 3,
"predicted_BB": 4,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "700712",
"player_name": "Walbert Ure\u00f1a",
"position": "Starter",
"team": "LAA",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAA",
"games": 157,
"wins": 60,
"losses": 97,
"win_pct": 0.3822,
"runs_scored": 632.0,
"runs_allowed": 721.0,
"run_differential": -89.0,
"run_differential_per_game": -0.5669,
"avg_runs_scored": 4.0255,
"avg_runs_allowed": 4.5924,
"offense_index": 0.8975,
"defense_index": 0.9767,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 5.3,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.2046
},
"opponent": {
"team": "OAK",
"games": 157,
"wins": 62,
"losses": 95,
"win_pct": 0.3949,
"runs_scored": 679.0,
"runs_allowed": 900.0,
"run_differential": -221.0,
"run_differential_per_game": -1.4076,
"avg_runs_scored": 4.3248,
"avg_runs_allowed": 5.7325,
"offense_index": 0.9642,
"defense_index": 0.7825,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 7.2,
"run_differential": -34.0
},
"available": true,
"quality_score": -0.3319
},
"edges": {
"quality_edge": 0.1273,
"offense_edge": -0.1025,
"opponent_offense_edge": -0.0358,
"defense_strength": -0.0233,
"opponent_defense_weakness": 0.2175,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0058,
"run_prevention": 0.9902,
"strikeout": 1.0067
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "700712",
"profile": {
"available": true,
"pitcher_id": "700712",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 576.0,
"k_percent": 23.1,
"bb_percent": 11.1,
"woba": 0.274,
"xwoba": 0.281,
"sweet_spot_percent": 26.4,
"barrel_batted_rate": 5.4,
"hard_hit_percent": 35.6,
"avg_best_speed": 75.0987,
"avg_hyper_speed": 93.6179,
"whiff_percent": 27.8,
"swing_percent": 46.7
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.7718,
"command_and_miss": 0.1121,
"regression_edge": -0.2,
"xwoba_edge": 0.8714,
"barrel_edge": 0.4,
"hard_hit_edge": 0.3286,
"whiff_edge": 0.3857,
"bb_edge": -0.5,
"pitch_design_score": 0.2362
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "700712",
"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": 94.08088078222924,
"release_spin_rate": 2099.1825547544627,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 94.08088078222924,
"release_spin_rate": 2099.1825547544627,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.0809,
"release_spin_rate": 2099.1826,
"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.2362,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.6869,
"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.4603,
"sample_weight": 1.0,
"run_prevention_factor": 0.9609,
"strikeout_factor": 1.0223,
"walk_factor": 1.04,
"homer_factor": 0.9287,
"woba_minus_xwoba": -0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "700712",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9609,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9609,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.04,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9287,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0223,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 4,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 26,
"Pitches": 113,
"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": "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 -3."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260923_LAA@OAK.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_LAA@OAK | home | Jeffrey Springs | Jeffrey Springs | True | 4.2 | 4.1 | -1 | 4 | 3 | -1 | 8/5 | 1/1 | 6/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 6.180722891566265,
"WHIP": 1.4674698795180723,
"IP": 138.1,
"games_started": null,
"games_pitched": 28,
"role_avg_IP": 4.94,
"recent_avg_IP": 4.933,
"last_start_IP": 3.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3188,
"sample_weight": 1.0,
"run_prevention_factor": 1.0271,
"strikeout_factor": 0.9634,
"walk_factor": 1.002,
"homer_factor": 1.0345,
"regression_flag": "positive_pitcher_regression",
"k_percent": 17.8,
"bb_percent": 9.2,
"woba": 0.366,
"xwoba": 0.335,
"barrel_percent": 9.1,
"hard_hit_percent": 34.5,
"whiff_percent": 22.8
},
"espn_rank": {
"rank": 804,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "605488",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 28,
"reference_playing_time": 9.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.2,
"ER": 19.0,
"R": 19.0,
"H": 26.0,
"BB": 9.0,
"SO": 20.0,
"HR": 4.0,
"BF": 108.0,
"Pitches": 420.0
},
"per_game": {
"IP": 5.0,
"ER": 3.8,
"R": 3.8,
"H": 5.2,
"BB": 1.8,
"SO": 4.0,
"HR": 0.8,
"BF": 21.6,
"Pitches": 84.0
},
"rates": {
"ERA": 6.9324,
"WHIP": 1.4189,
"ER_per_IP": 0.77027,
"H_per_IP": 1.05405,
"BB_per_IP": 0.36486,
"SO_per_IP": 0.81081,
"HR_per_IP": 0.16216
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 45.0,
"ER": 35.0,
"R": 36.0,
"H": 51.0,
"BB": 23.0,
"SO": 29.0,
"HR": 9.0,
"BF": 205.0,
"Pitches": 797.0
},
"per_game": {
"IP": 4.2,
"ER": 3.5,
"R": 3.6,
"H": 5.1,
"BB": 2.3,
"SO": 2.9,
"HR": 0.9,
"BF": 20.5,
"Pitches": 79.7
},
"rates": {
"ERA": 7.0,
"WHIP": 1.6444,
"ER_per_IP": 0.77778,
"H_per_IP": 1.13333,
"BB_per_IP": 0.51111,
"SO_per_IP": 0.64444,
"HR_per_IP": 0.2
}
},
"season": {
"games": 28,
"totals": {
"IP": 138.1,
"ER": 95.0,
"R": 102.0,
"H": 147.0,
"BB": 56.0,
"SO": 109.0,
"HR": 33.0,
"BF": 612.0,
"Pitches": 2380.0
},
"per_game": {
"IP": 5.0,
"ER": 3.3929,
"R": 3.6429,
"H": 5.25,
"BB": 2.0,
"SO": 3.8929,
"HR": 1.1786,
"BF": 21.8571,
"Pitches": 85.0
},
"rates": {
"ERA": 6.1807,
"WHIP": 1.4675,
"ER_per_IP": 0.68675,
"H_per_IP": 1.06265,
"BB_per_IP": 0.40482,
"SO_per_IP": 0.78795,
"HR_per_IP": 0.23855
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 3.959,
"predicted_H": 5.881,
"predicted_BB": 2.296,
"predicted_SO": 4.277,
"predicted_HR": 1.015,
"predicted_ERA": 6.4696,
"predicted_WHIP": 1.4847
}
},
"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": 9.0,
"form": 5.2,
"final": 7.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 3.959,
"final": 3.562,
"source": "model_form_blend"
},
"predicted_H": {
"model": 8.0,
"form": 5.881,
"final": 6.7583,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.296,
"final": 1.7594,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.277,
"final": 4.9903,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.015,
"final": 1.0088,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.4696,
"final": 6.4696,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4847,
"final": 1.4847,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 45.0,
"ER": 35,
"H": 51,
"BB": 23,
"SO": 29,
"HR": 9,
"ERA": 6.999999999999999,
"WHIP": 1.6444444444444442,
"K9": 5.799999999999999,
"HR9": 1.7999999999999998,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-17T00:00:00"
},
"recent_form_boost": 1.292324904550856,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 9.0,
"predicted_ER": 3.0,
"predicted_H": 8.0,
"predicted_BB": 1.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 28.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8485,
"prior_weight": 0.1515
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 3,
"predicted_H": 8,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 4,
"predicted_H": 8,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "605488",
"player_name": "Jeffrey Springs",
"position": "Starter",
"team": "OAK",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 8.0,
"predicted_HR": 1.0,
"predicted_IP": 9.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 8.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.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": 9.0,
"after": 4.2,
"delta": -4.8,
"percent_delta": -0.5333,
"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": 9.0,
"after": 4.2,
"delta": -4.8,
"percent_delta": -0.5333,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_ER",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 9.0,
"after": 4.2,
"delta": -4.8,
"percent_delta": -0.5333,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_ER",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 9.0,
"after": 4.2,
"delta": -4.8,
"percent_delta": -0.5333,
"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": 157,
"wins": 62,
"losses": 95,
"win_pct": 0.3949,
"runs_scored": 679.0,
"runs_allowed": 900.0,
"run_differential": -221.0,
"run_differential_per_game": -1.4076,
"avg_runs_scored": 4.3248,
"avg_runs_allowed": 5.7325,
"offense_index": 0.9642,
"defense_index": 0.7825,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 7.2,
"run_differential": -34.0
},
"available": true,
"quality_score": -0.3319
},
"opponent": {
"team": "LAA",
"games": 157,
"wins": 60,
"losses": 97,
"win_pct": 0.3822,
"runs_scored": 632.0,
"runs_allowed": 721.0,
"run_differential": -89.0,
"run_differential_per_game": -0.5669,
"avg_runs_scored": 4.0255,
"avg_runs_allowed": 4.5924,
"offense_index": 0.8975,
"defense_index": 0.9767,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 5.3,
"run_differential": -15.0
},
"available": true,
"quality_score": -0.2046
},
"edges": {
"quality_edge": -0.1273,
"offense_edge": -0.0358,
"opponent_offense_edge": -0.1025,
"defense_strength": -0.2175,
"opponent_defense_weakness": 0.0233,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9925,
"run_prevention": 1.0117,
"strikeout": 1.0044
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "605488",
"profile": {
"available": true,
"pitcher_id": "605488",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 584.0,
"k_percent": 17.8,
"bb_percent": 9.2,
"woba": 0.366,
"xwoba": 0.335,
"sweet_spot_percent": 35.9,
"barrel_batted_rate": 9.1,
"hard_hit_percent": 34.5,
"avg_best_speed": 76.1724,
"avg_hyper_speed": 93.3919,
"whiff_percent": 22.8,
"swing_percent": 46.3
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.5174,
"command_and_miss": -0.3836,
"regression_edge": 0.8857,
"xwoba_edge": -0.6714,
"barrel_edge": -0.4222,
"hard_hit_edge": 0.4857,
"whiff_edge": -0.3286,
"bb_edge": -0.025,
"pitch_design_score": -0.2235
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "605488",
"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": 85.8733346846715,
"release_spin_rate": 1993.49048040678,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 85.8733346846715,
"release_spin_rate": 1993.49048040678,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.8733,
"release_spin_rate": 1993.4905,
"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.2235,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.5961,
"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.3188,
"sample_weight": 1.0,
"run_prevention_factor": 1.0271,
"strikeout_factor": 0.9634,
"walk_factor": 1.002,
"homer_factor": 1.0345,
"woba_minus_xwoba": 0.031,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "605488",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0271,
"adjusted": 4
},
"predicted_H": {
"original": 5.0,
"factor": 1.0271,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.002,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0345,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9634,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 8,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 99,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260923_LAA@OAK.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_MIA@CHC | away | Ryan Gusto | Ryan Gusto | True | 4.2 | 5.1 | 2 | 4 | 2 | -2 | 3/6 | 3/2 | 3/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.137096774193548,
"WHIP": 1.439516129032258,
"IP": 82.2,
"games_started": null,
"games_pitched": 22,
"role_avg_IP": 4.314,
"recent_avg_IP": 5.0,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.4561,
"sample_weight": 1.0,
"run_prevention_factor": 1.0388,
"strikeout_factor": 0.956,
"walk_factor": 0.958,
"homer_factor": 1.0835,
"regression_flag": "neutral",
"k_percent": 18.7,
"bb_percent": 7.0,
"woba": 0.34,
"xwoba": 0.339,
"barrel_percent": 8.9,
"hard_hit_percent": 43.1,
"whiff_percent": 20.6
},
"espn_rank": {
"rank": 208,
"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": "687473",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 22,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 10.0,
"R": 10.0,
"H": 31.0,
"BB": 11.0,
"SO": 18.0,
"HR": 3.0,
"BF": 114.0,
"Pitches": 433.0
},
"per_game": {
"IP": 5.0,
"ER": 2.0,
"R": 2.0,
"H": 6.2,
"BB": 2.2,
"SO": 3.6,
"HR": 0.6,
"BF": 22.8,
"Pitches": 86.6
},
"rates": {
"ERA": 3.6,
"WHIP": 1.68,
"ER_per_IP": 0.4,
"H_per_IP": 1.24,
"BB_per_IP": 0.44,
"SO_per_IP": 0.72,
"HR_per_IP": 0.12
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 48.2,
"ER": 21.0,
"R": 23.0,
"H": 59.0,
"BB": 15.0,
"SO": 38.0,
"HR": 8.0,
"BF": 218.0,
"Pitches": 787.0
},
"per_game": {
"IP": 5.0,
"ER": 2.1,
"R": 2.3,
"H": 5.9,
"BB": 1.5,
"SO": 3.8,
"HR": 0.8,
"BF": 21.8,
"Pitches": 78.7
},
"rates": {
"ERA": 3.8836,
"WHIP": 1.5205,
"ER_per_IP": 0.43151,
"H_per_IP": 1.21233,
"BB_per_IP": 0.30822,
"SO_per_IP": 0.78082,
"HR_per_IP": 0.16438
}
},
"season": {
"games": 22,
"totals": {
"IP": 82.2,
"ER": 38.0,
"R": 41.0,
"H": 93.0,
"BB": 26.0,
"SO": 69.0,
"HR": 11.0,
"BF": 369.0,
"Pitches": 1353.0
},
"per_game": {
"IP": 3.2,
"ER": 1.7273,
"R": 1.8636,
"H": 4.2273,
"BB": 1.1818,
"SO": 3.1364,
"HR": 0.5,
"BF": 16.7727,
"Pitches": 61.5
},
"rates": {
"ERA": 4.1371,
"WHIP": 1.4395,
"ER_per_IP": 0.45968,
"H_per_IP": 1.125,
"BB_per_IP": 0.31452,
"SO_per_IP": 0.83468,
"HR_per_IP": 0.13306
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.073,
"predicted_H": 5.501,
"predicted_BB": 1.748,
"predicted_SO": 3.759,
"predicted_HR": 0.661,
"predicted_ERA": 3.9512,
"predicted_WHIP": 1.5355
}
},
"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": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.073,
"final": 2.47,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.501,
"final": 4.43,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.748,
"final": 2.2842,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 3.759,
"final": 2.5775,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.661,
"final": 0.8062,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.9512,
"final": 3.9512,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5355,
"final": 1.5355,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 48.2,
"ER": 21,
"H": 59,
"BB": 15,
"SO": 38,
"HR": 8,
"ERA": 3.883561643835616,
"WHIP": 1.5205479452054793,
"K9": 7.027397260273972,
"HR9": 1.4794520547945205,
"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-16T00:00:00"
},
"recent_form_boost": 0.9386281770013889,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_BB": 3.0,
"predicted_SO": 1.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": "687473",
"player_name": "Ryan Gusto",
"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": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 1.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_R": 3.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 3.0,
"delta": 2.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 1.0,
"after": 3.0,
"delta": 2.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 3.0,
"delta": 2.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 1.0,
"after": 3.0,
"delta": 2.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIA",
"games": 157,
"wins": 77,
"losses": 80,
"win_pct": 0.4904,
"runs_scored": 700.0,
"runs_allowed": 697.0,
"run_differential": 3.0,
"run_differential_per_game": 0.0191,
"avg_runs_scored": 4.4586,
"avg_runs_allowed": 4.4395,
"offense_index": 0.9952,
"defense_index": 1.0092,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 5.0,
"run_differential": -4.0
},
"available": true,
"quality_score": -0.0058
},
"opponent": {
"team": "CHC",
"games": 157,
"wins": 87,
"losses": 70,
"win_pct": 0.5541,
"runs_scored": 837.0,
"runs_allowed": 691.0,
"run_differential": 146.0,
"run_differential_per_game": 0.9299,
"avg_runs_scored": 5.3312,
"avg_runs_allowed": 4.4013,
"offense_index": 1.19,
"defense_index": 1.0179,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 3.9,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.1951
},
"edges": {
"quality_edge": -0.2009,
"offense_edge": -0.0048,
"opponent_offense_edge": 0.19,
"defense_strength": 0.0092,
"opponent_defense_weakness": -0.0179,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9846,
"run_prevention": 1.0395,
"strikeout": 0.9788
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "687473",
"profile": {
"available": true,
"pitcher_id": "687473",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 346.0,
"k_percent": 18.7,
"bb_percent": 7.0,
"woba": 0.34,
"xwoba": 0.339,
"sweet_spot_percent": 38.7,
"barrel_batted_rate": 8.9,
"hard_hit_percent": 43.1,
"avg_best_speed": 79.5277,
"avg_hyper_speed": 94.2775,
"whiff_percent": 20.6,
"swing_percent": 49.2
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.6607,
"command_and_miss": -0.3257,
"regression_edge": 0.0286,
"xwoba_edge": -0.7857,
"barrel_edge": -0.3778,
"hard_hit_edge": -0.7429,
"whiff_edge": -0.6429,
"bb_edge": 0.525,
"pitch_design_score": -0.0538
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687473",
"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": 88.90337160517102,
"release_spin_rate": 2251.003319274584,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 88.90337160517102,
"release_spin_rate": 2251.003319274584,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.9034,
"release_spin_rate": 2251.0033,
"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.0538,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.3841,
"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.4561,
"sample_weight": 1.0,
"run_prevention_factor": 1.0388,
"strikeout_factor": 0.956,
"walk_factor": 0.958,
"homer_factor": 1.0835,
"woba_minus_xwoba": 0.001,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "687473",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0388,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 1.0388,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.958,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0835,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.956,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 20,
"Pitches": 92,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260923_MIA@CHC.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_MIA@CHC | home | Kevin Gausman | Kevin Gausman | True | 5.2 | 5.2 | 0 | 2 | 2 | 0 | 4/6 | 0/1 | 5/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.5523255813953485,
"WHIP": 1.2732558139534884,
"IP": 172.0,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.548,
"recent_avg_IP": 5.733,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1363,
"sample_weight": 1.0,
"run_prevention_factor": 0.9884,
"strikeout_factor": 1.0263,
"walk_factor": 0.944,
"homer_factor": 1.0133,
"regression_flag": "neutral",
"k_percent": 24.3,
"bb_percent": 6.3,
"woba": 0.315,
"xwoba": 0.308,
"barrel_percent": 7.6,
"hard_hit_percent": 39.5,
"whiff_percent": 27.3
},
"espn_rank": {
"rank": 183,
"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": "592332",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.2,
"ER": 14.0,
"R": 15.0,
"H": 27.0,
"BB": 6.0,
"SO": 34.0,
"HR": 7.0,
"BF": 119.0,
"Pitches": 487.0
},
"per_game": {
"IP": 5.2,
"ER": 2.8,
"R": 3.0,
"H": 5.4,
"BB": 1.2,
"SO": 6.8,
"HR": 1.4,
"BF": 23.8,
"Pitches": 97.4
},
"rates": {
"ERA": 4.3953,
"WHIP": 1.1512,
"ER_per_IP": 0.48837,
"H_per_IP": 0.94186,
"BB_per_IP": 0.2093,
"SO_per_IP": 1.18605,
"HR_per_IP": 0.24419
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 56.1,
"ER": 29.0,
"R": 30.0,
"H": 59.0,
"BB": 12.0,
"SO": 60.0,
"HR": 10.0,
"BF": 237.0,
"Pitches": 954.0
},
"per_game": {
"IP": 5.2,
"ER": 2.9,
"R": 3.0,
"H": 5.9,
"BB": 1.2,
"SO": 6.0,
"HR": 1.0,
"BF": 23.7,
"Pitches": 95.4
},
"rates": {
"ERA": 4.6331,
"WHIP": 1.2604,
"ER_per_IP": 0.51479,
"H_per_IP": 1.04734,
"BB_per_IP": 0.21302,
"SO_per_IP": 1.06509,
"HR_per_IP": 0.17751
}
},
"season": {
"games": 31,
"totals": {
"IP": 172.0,
"ER": 87.0,
"R": 94.0,
"H": 173.0,
"BB": 46.0,
"SO": 177.0,
"HR": 25.0,
"BF": 728.0,
"Pitches": 2902.0
},
"per_game": {
"IP": 5.2,
"ER": 2.8065,
"R": 3.0323,
"H": 5.5806,
"BB": 1.4839,
"SO": 5.7097,
"HR": 0.8065,
"BF": 23.4839,
"Pitches": 93.6129
},
"rates": {
"ERA": 4.5523,
"WHIP": 1.2733,
"ER_per_IP": 0.50581,
"H_per_IP": 1.00581,
"BB_per_IP": 0.26744,
"SO_per_IP": 1.02907,
"HR_per_IP": 0.14535
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.846,
"predicted_H": 5.61,
"predicted_BB": 1.381,
"predicted_SO": 6.165,
"predicted_HR": 1.098,
"predicted_ERA": 4.5206,
"predicted_WHIP": 1.2337
}
},
"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": 2.0,
"form": 2.846,
"final": 2.5003,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.61,
"final": 4.952,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.381,
"final": 0.8166,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 6.165,
"final": 5.6889,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.098,
"final": 1.0579,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5206,
"final": 4.5206,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2337,
"final": 1.2337,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 56.1,
"ER": 29,
"H": 59,
"BB": 12,
"SO": 60,
"HR": 10,
"ERA": 4.633136094674556,
"WHIP": 1.2603550295857988,
"K9": 9.585798816568047,
"HR9": 1.5976331360946745,
"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-15T00:00:00"
},
"recent_form_boost": 1.0164504798302776,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_BB": 0.0,
"predicted_SO": 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": "592332",
"player_name": "Kevin Gausman",
"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": 0.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 1.0,
"predicted_IP": 5.2,
"predicted_R": 2.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.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": "CHC",
"games": 157,
"wins": 87,
"losses": 70,
"win_pct": 0.5541,
"runs_scored": 837.0,
"runs_allowed": 691.0,
"run_differential": 146.0,
"run_differential_per_game": 0.9299,
"avg_runs_scored": 5.3312,
"avg_runs_allowed": 4.4013,
"offense_index": 1.19,
"defense_index": 1.0179,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 3.9,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.1951
},
"opponent": {
"team": "MIA",
"games": 157,
"wins": 77,
"losses": 80,
"win_pct": 0.4904,
"runs_scored": 700.0,
"runs_allowed": 697.0,
"run_differential": 3.0,
"run_differential_per_game": 0.0191,
"avg_runs_scored": 4.4586,
"avg_runs_allowed": 4.4395,
"offense_index": 0.9952,
"defense_index": 1.0092,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 5.0,
"run_differential": -4.0
},
"available": true,
"quality_score": -0.0058
},
"edges": {
"quality_edge": 0.2009,
"offense_edge": 0.19,
"opponent_offense_edge": -0.0048,
"defense_strength": 0.0179,
"opponent_defense_weakness": -0.0092,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0088,
"run_prevention": 0.9874,
"strikeout": 1.0064
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "592332",
"profile": {
"available": true,
"pitcher_id": "592332",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 698.0,
"k_percent": 24.3,
"bb_percent": 6.3,
"woba": 0.315,
"xwoba": 0.308,
"sweet_spot_percent": 34.1,
"barrel_batted_rate": 7.6,
"hard_hit_percent": 39.5,
"avg_best_speed": 76.9024,
"avg_hyper_speed": 94.4387,
"whiff_percent": 27.3,
"swing_percent": 50.0
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0263,
"command_and_miss": 0.4043,
"regression_edge": 0.2,
"xwoba_edge": 0.1,
"barrel_edge": -0.0889,
"hard_hit_edge": -0.2286,
"whiff_edge": 0.3143,
"bb_edge": 0.7,
"pitch_design_score": -0.044
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "592332",
"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": 89.07749610166415,
"release_spin_rate": 2007.4215713814062,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 89.07749610166415,
"release_spin_rate": 2007.4215713814062,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.0775,
"release_spin_rate": 2007.4216,
"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.3145,
"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.1363,
"sample_weight": 1.0,
"run_prevention_factor": 0.9884,
"strikeout_factor": 1.0263,
"walk_factor": 0.944,
"homer_factor": 1.0133,
"woba_minus_xwoba": 0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "592332",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9884,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9884,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.944,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0133,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0263,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"Pitches": 94,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260923_MIA@CHC.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_MIL@PHI | away | Logan Henderson | Logan Henderson | True | 6.0 | 5.0 | -3 | 3 | 1 | -2 | 2/4 | 2/3 | 7/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.507142857142857,
"WHIP": 0.8142857142857143,
"IP": 93.1,
"games_started": null,
"games_pitched": 17,
"role_avg_IP": 5.49,
"recent_avg_IP": 6.0,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.6895,
"sample_weight": 1.0,
"run_prevention_factor": 0.9414,
"strikeout_factor": 1.0611,
"walk_factor": 0.91,
"homer_factor": 0.9852,
"regression_flag": "neutral",
"k_percent": 30.7,
"bb_percent": 4.6,
"woba": 0.249,
"xwoba": 0.257,
"barrel_percent": 8.9,
"hard_hit_percent": 38.2,
"whiff_percent": 27.0
},
"espn_rank": {
"rank": 34,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 6.0,
"season_IP": 93.1,
"season_ERA": 2.507,
"season_WHIP": 0.814,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 17.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7727,
"prior_weight": 0.2273
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "701656",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 17,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 7.0,
"R": 8.0,
"H": 17.0,
"BB": 4.0,
"SO": 32.0,
"HR": 4.0,
"BF": 109.0,
"Pitches": 475.0
},
"per_game": {
"IP": 6.0,
"ER": 1.4,
"R": 1.6,
"H": 3.4,
"BB": 0.8,
"SO": 6.4,
"HR": 0.8,
"BF": 21.8,
"Pitches": 95.0
},
"rates": {
"ERA": 2.1,
"WHIP": 0.7,
"ER_per_IP": 0.23333,
"H_per_IP": 0.56667,
"BB_per_IP": 0.13333,
"SO_per_IP": 1.06667,
"HR_per_IP": 0.13333
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.0,
"ER": 15.0,
"R": 16.0,
"H": 36.0,
"BB": 9.0,
"SO": 69.0,
"HR": 11.0,
"BF": 221.0,
"Pitches": 915.0
},
"per_game": {
"IP": 6.0,
"ER": 1.5,
"R": 1.6,
"H": 3.6,
"BB": 0.9,
"SO": 6.9,
"HR": 1.1,
"BF": 22.1,
"Pitches": 91.5
},
"rates": {
"ERA": 2.25,
"WHIP": 0.75,
"ER_per_IP": 0.25,
"H_per_IP": 0.6,
"BB_per_IP": 0.15,
"SO_per_IP": 1.15,
"HR_per_IP": 0.18333
}
},
"season": {
"games": 17,
"totals": {
"IP": 93.1,
"ER": 26.0,
"R": 27.0,
"H": 60.0,
"BB": 16.0,
"SO": 107.0,
"HR": 14.0,
"BF": 349.0,
"Pitches": 1418.0
},
"per_game": {
"IP": 5.1,
"ER": 1.5294,
"R": 1.5882,
"H": 3.5294,
"BB": 0.9412,
"SO": 6.2941,
"HR": 0.8235,
"BF": 20.5294,
"Pitches": 83.4118
},
"rates": {
"ERA": 2.5071,
"WHIP": 0.8143,
"ER_per_IP": 0.27857,
"H_per_IP": 0.64286,
"BB_per_IP": 0.17143,
"SO_per_IP": 1.14643,
"HR_per_IP": 0.15
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.814,
"predicted_H": 4.019,
"predicted_BB": 1.174,
"predicted_SO": 6.322,
"predicted_HR": 0.901,
"predicted_ERA": 2.7687,
"predicted_WHIP": 0.8805
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.446,
"form_weight": 0.554,
"form_reliability": 0.7727,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 17.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7727,
"prior_weight": 0.2273
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.814,
"final": 2.343,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.019,
"final": 3.1185,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.174,
"final": 1.5424,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 6.322,
"final": 6.6244,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.901,
"final": 1.3912,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.7687,
"final": 2.7687,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.8805,
"final": 0.8805,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 60.0,
"ER": 15,
"H": 36,
"BB": 9,
"SO": 69,
"HR": 11,
"ERA": 2.2500000000000004,
"WHIP": 0.7500000000000001,
"K9": 10.350000000000001,
"HR9": 1.6500000000000001,
"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-16T00:00:00"
},
"recent_form_boost": 0.7355887934397453,
"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": 2.0,
"predicted_BB": 2.0,
"predicted_SO": 7.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 17.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7727,
"prior_weight": 0.2273
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3,
"predicted_H": 2,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "701656",
"player_name": "Logan Henderson",
"position": "Starter",
"team": "MIL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_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": 2.0,
"predicted_ER": 3.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 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": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIL",
"games": 157,
"wins": 98,
"losses": 59,
"win_pct": 0.6242,
"runs_scored": 806.0,
"runs_allowed": 606.0,
"run_differential": 200.0,
"run_differential_per_game": 1.2739,
"avg_runs_scored": 5.1338,
"avg_runs_allowed": 3.8599,
"offense_index": 1.1459,
"defense_index": 1.1607,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.4,
"avg_runs_allowed": 3.6,
"run_differential": 28.0
},
"available": true,
"quality_score": 0.332
},
"opponent": {
"team": "PHI",
"games": 157,
"wins": 87,
"losses": 70,
"win_pct": 0.5541,
"runs_scored": 703.0,
"runs_allowed": 672.0,
"run_differential": 31.0,
"run_differential_per_game": 0.1975,
"avg_runs_scored": 4.4777,
"avg_runs_allowed": 4.2803,
"offense_index": 0.9995,
"defense_index": 1.0467,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 5.0,
"run_differential": -6.0
},
"available": true,
"quality_score": 0.0702
},
"edges": {
"quality_edge": 0.2618,
"offense_edge": 0.1459,
"opponent_offense_edge": -0.0005,
"defense_strength": 0.1607,
"opponent_defense_weakness": -0.0467,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0153,
"run_prevention": 0.9708,
"strikeout": 1.0079
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "701656",
"profile": {
"available": true,
"pitcher_id": "701656",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 327.0,
"k_percent": 30.7,
"bb_percent": 4.6,
"woba": 0.249,
"xwoba": 0.257,
"sweet_spot_percent": 32.9,
"barrel_batted_rate": 8.9,
"hard_hit_percent": 38.2,
"avg_best_speed": 77.3177,
"avg_hyper_speed": 94.006,
"whiff_percent": 27.0,
"swing_percent": 53.6
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.8735,
"command_and_miss": 0.8857,
"regression_edge": -0.2286,
"xwoba_edge": 1.5571,
"barrel_edge": -0.3778,
"hard_hit_edge": -0.0429,
"whiff_edge": 0.2714,
"bb_edge": 1.125,
"pitch_design_score": -0.088
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "701656",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 96,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 96,
"pitch_usage": 0.0,
"release_speed": 88.2913826151733,
"release_spin_rate": 2416.722169597347,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 96,
"pitch_usage": 0.0,
"release_speed": 88.2913826151733,
"release_spin_rate": 2416.722169597347,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.2914,
"release_spin_rate": 2416.7222,
"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.088,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.6289,
"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.6895,
"sample_weight": 1.0,
"run_prevention_factor": 0.9414,
"strikeout_factor": 1.0611,
"walk_factor": 0.91,
"homer_factor": 0.9852,
"woba_minus_xwoba": -0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "701656",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9414,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 0.9414,
"adjusted": 3
},
"predicted_BB": {
"original": 1.0,
"factor": 0.91,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9852,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0611,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 2,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 23,
"Pitches": 90,
"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": "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: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260923_MIL@PHI.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_MIL@PHI | home | Aaron Nola | Aaron Nola | True | 6.0 | 6.0 | 0 | 3 | 4 | 1 | 6/4 | 2/1 | 7/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.491089108910891,
"WHIP": 1.3485148514851484,
"IP": 168.1,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.43,
"recent_avg_IP": 6.267,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0222,
"sample_weight": 1.0,
"run_prevention_factor": 0.9981,
"strikeout_factor": 1.0229,
"walk_factor": 0.98,
"homer_factor": 1.0473,
"regression_flag": "positive_pitcher_regression",
"k_percent": 23.7,
"bb_percent": 8.1,
"woba": 0.342,
"xwoba": 0.312,
"barrel_percent": 9.1,
"hard_hit_percent": 40.2,
"whiff_percent": 27.3
},
"espn_rank": {
"rank": 31,
"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": "605400",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.1,
"ER": 6.0,
"R": 6.0,
"H": 21.0,
"BB": 12.0,
"SO": 23.0,
"HR": 3.0,
"BF": 121.0,
"Pitches": 471.0
},
"per_game": {
"IP": 6.1,
"ER": 1.2,
"R": 1.2,
"H": 4.2,
"BB": 2.4,
"SO": 4.6,
"HR": 0.6,
"BF": 24.2,
"Pitches": 94.2
},
"rates": {
"ERA": 1.7234,
"WHIP": 1.0532,
"ER_per_IP": 0.19149,
"H_per_IP": 0.67021,
"BB_per_IP": 0.38298,
"SO_per_IP": 0.73404,
"HR_per_IP": 0.09574
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.0,
"ER": 14.0,
"R": 14.0,
"H": 48.0,
"BB": 22.0,
"SO": 57.0,
"HR": 9.0,
"BF": 239.0,
"Pitches": 955.0
},
"per_game": {
"IP": 6.0,
"ER": 1.4,
"R": 1.4,
"H": 4.8,
"BB": 2.2,
"SO": 5.7,
"HR": 0.9,
"BF": 23.9,
"Pitches": 95.5
},
"rates": {
"ERA": 2.1,
"WHIP": 1.1667,
"ER_per_IP": 0.23333,
"H_per_IP": 0.8,
"BB_per_IP": 0.36667,
"SO_per_IP": 0.95,
"HR_per_IP": 0.15
}
},
"season": {
"games": 31,
"totals": {
"IP": 168.1,
"ER": 84.0,
"R": 86.0,
"H": 169.0,
"BB": 58.0,
"SO": 169.0,
"HR": 34.0,
"BF": 714.0,
"Pitches": 2837.0
},
"per_game": {
"IP": 5.1,
"ER": 2.7097,
"R": 2.7742,
"H": 5.4516,
"BB": 1.871,
"SO": 5.4516,
"HR": 1.0968,
"BF": 23.0323,
"Pitches": 91.5161
},
"rates": {
"ERA": 4.4911,
"WHIP": 1.3485,
"ER_per_IP": 0.49901,
"H_per_IP": 1.00396,
"BB_per_IP": 0.34455,
"SO_per_IP": 1.00396,
"HR_per_IP": 0.20198
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.812,
"predicted_H": 4.871,
"predicted_BB": 2.229,
"predicted_SO": 5.256,
"predicted_HR": 0.828,
"predicted_ERA": 2.7113,
"predicted_WHIP": 1.1805
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.812,
"final": 2.2975,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.871,
"final": 5.3324,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.229,
"final": 2.1354,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 5.256,
"final": 5.9687,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.828,
"final": 0.8983,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.7113,
"final": 2.7113,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1805,
"final": 1.1805,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 60.0,
"ER": 14,
"H": 48,
"BB": 22,
"SO": 57,
"HR": 9,
"ERA": 2.1,
"WHIP": 1.1666666666666667,
"K9": 8.55,
"HR9": 1.35,
"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-17T00:00:00"
},
"recent_form_boost": 0.7291304601064118,
"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": 6.0,
"predicted_BB": 2.0,
"predicted_SO": 7.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": "605400",
"player_name": "Aaron Nola",
"position": "Starter",
"team": "PHI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PHI",
"games": 157,
"wins": 87,
"losses": 70,
"win_pct": 0.5541,
"runs_scored": 703.0,
"runs_allowed": 672.0,
"run_differential": 31.0,
"run_differential_per_game": 0.1975,
"avg_runs_scored": 4.4777,
"avg_runs_allowed": 4.2803,
"offense_index": 0.9995,
"defense_index": 1.0467,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 5.0,
"run_differential": -6.0
},
"available": true,
"quality_score": 0.0702
},
"opponent": {
"team": "MIL",
"games": 157,
"wins": 98,
"losses": 59,
"win_pct": 0.6242,
"runs_scored": 806.0,
"runs_allowed": 606.0,
"run_differential": 200.0,
"run_differential_per_game": 1.2739,
"avg_runs_scored": 5.1338,
"avg_runs_allowed": 3.8599,
"offense_index": 1.1459,
"defense_index": 1.1607,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 6.4,
"avg_runs_allowed": 3.6,
"run_differential": 28.0
},
"available": true,
"quality_score": 0.332
},
"edges": {
"quality_edge": -0.2618,
"offense_edge": -0.0005,
"opponent_offense_edge": 0.1459,
"defense_strength": 0.0467,
"opponent_defense_weakness": -0.1607,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9851,
"run_prevention": 1.0318,
"strikeout": 0.9805
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "605400",
"profile": {
"available": true,
"pitcher_id": "605400",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 663.0,
"k_percent": 23.7,
"bb_percent": 8.1,
"woba": 0.342,
"xwoba": 0.312,
"sweet_spot_percent": 34.4,
"barrel_batted_rate": 9.1,
"hard_hit_percent": 40.2,
"avg_best_speed": 76.8713,
"avg_hyper_speed": 94.2748,
"whiff_percent": 27.3,
"swing_percent": 46.2
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2102,
"command_and_miss": 0.2757,
"regression_edge": 0.8571,
"xwoba_edge": -0.0143,
"barrel_edge": -0.4222,
"hard_hit_edge": -0.3286,
"whiff_edge": 0.3143,
"bb_edge": 0.25,
"pitch_design_score": -0.2181
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "605400",
"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": 85.96943619771524,
"release_spin_rate": 2296.1915924432924,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 85.96943619771524,
"release_spin_rate": 2296.1915924432924,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.9694,
"release_spin_rate": 2296.1916,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.2181,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.5577,
"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.0222,
"sample_weight": 1.0,
"run_prevention_factor": 0.9981,
"strikeout_factor": 1.0229,
"walk_factor": 0.98,
"homer_factor": 1.0473,
"woba_minus_xwoba": 0.03,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "605400",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9981,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9981,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.98,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0473,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0229,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 26,
"Pitches": 114,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"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/20260923_MIL@PHI.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_MIN@SF | away | Connor Prielipp | Connor Prielipp | True | 5.2 | 5.1 | -1 | 3 | 2 | -1 | 2/4 | 1/2 | 4/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.93628808864266,
"WHIP": 1.296398891966759,
"IP": 120.1,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 5.302,
"recent_avg_IP": 5.733,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.01,
"sample_weight": 1.0,
"run_prevention_factor": 0.9991,
"strikeout_factor": 1.0063,
"walk_factor": 0.982,
"homer_factor": 1.0133,
"regression_flag": "neutral",
"k_percent": 24.4,
"bb_percent": 8.2,
"woba": 0.316,
"xwoba": 0.308,
"barrel_percent": 6.8,
"hard_hit_percent": 42.0,
"whiff_percent": 23.7
},
"espn_rank": {
"rank": 354,
"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": "687570",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.2,
"ER": 8.0,
"R": 8.0,
"H": 21.0,
"BB": 4.0,
"SO": 24.0,
"HR": 1.0,
"BF": 105.0,
"Pitches": 388.0
},
"per_game": {
"IP": 5.1,
"ER": 1.6,
"R": 1.6,
"H": 4.2,
"BB": 0.8,
"SO": 4.8,
"HR": 0.2,
"BF": 21.0,
"Pitches": 77.6
},
"rates": {
"ERA": 2.7,
"WHIP": 0.9375,
"ER_per_IP": 0.3,
"H_per_IP": 0.7875,
"BB_per_IP": 0.15,
"SO_per_IP": 0.9,
"HR_per_IP": 0.0375
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.2,
"ER": 29.0,
"R": 29.0,
"H": 48.0,
"BB": 17.0,
"SO": 54.0,
"HR": 6.0,
"BF": 219.0,
"Pitches": 834.0
},
"per_game": {
"IP": 5.1,
"ER": 2.9,
"R": 2.9,
"H": 4.8,
"BB": 1.7,
"SO": 5.4,
"HR": 0.6,
"BF": 21.9,
"Pitches": 83.4
},
"rates": {
"ERA": 4.8634,
"WHIP": 1.2112,
"ER_per_IP": 0.54037,
"H_per_IP": 0.89441,
"BB_per_IP": 0.31677,
"SO_per_IP": 1.00621,
"HR_per_IP": 0.1118
}
},
"season": {
"games": 23,
"totals": {
"IP": 120.1,
"ER": 66.0,
"R": 74.0,
"H": 114.0,
"BB": 42.0,
"SO": 125.0,
"HR": 14.0,
"BF": 513.0,
"Pitches": 1990.0
},
"per_game": {
"IP": 5.1,
"ER": 2.8696,
"R": 3.2174,
"H": 4.9565,
"BB": 1.8261,
"SO": 5.4348,
"HR": 0.6087,
"BF": 22.3043,
"Pitches": 86.5217
},
"rates": {
"ERA": 4.9363,
"WHIP": 1.2964,
"ER_per_IP": 0.54848,
"H_per_IP": 0.94737,
"BB_per_IP": 0.34903,
"SO_per_IP": 1.03878,
"HR_per_IP": 0.11634
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.413,
"predicted_H": 4.74,
"predicted_BB": 1.462,
"predicted_SO": 5.177,
"predicted_HR": 0.494,
"predicted_ERA": 4.0263,
"predicted_WHIP": 1.1501
}
},
"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": 3.0,
"form": 2.413,
"final": 2.6627,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.74,
"final": 3.5742,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.462,
"final": 1.2654,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 5.177,
"final": 4.6762,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.494,
"final": 0.2838,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.0263,
"final": 4.0263,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1501,
"final": 1.1501,
"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": 29,
"H": 48,
"BB": 17,
"SO": 54,
"HR": 6,
"ERA": 4.863354037267081,
"WHIP": 1.2111801242236024,
"K9": 9.055900621118013,
"HR9": 1.0062111801242237,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 1.0411206257378818,
"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": 2.0,
"predicted_BB": 1.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "687570",
"player_name": "Connor Prielipp",
"position": "Starter",
"team": "MIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 2.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": 2.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": "MIN",
"games": 158,
"wins": 74,
"losses": 84,
"win_pct": 0.4684,
"runs_scored": 717.0,
"runs_allowed": 783.0,
"run_differential": -66.0,
"run_differential_per_game": -0.4177,
"avg_runs_scored": 4.538,
"avg_runs_allowed": 4.9557,
"offense_index": 1.0089,
"defense_index": 0.9076,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 4.7,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.1129
},
"opponent": {
"team": "SF",
"games": 158,
"wins": 65,
"losses": 93,
"win_pct": 0.4114,
"runs_scored": 663.0,
"runs_allowed": 745.0,
"run_differential": -82.0,
"run_differential_per_game": -0.519,
"avg_runs_scored": 4.1962,
"avg_runs_allowed": 4.7152,
"offense_index": 0.933,
"defense_index": 0.9539,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.9,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.2088
},
"edges": {
"quality_edge": 0.0959,
"offense_edge": 0.0089,
"opponent_offense_edge": -0.067,
"defense_strength": -0.0924,
"opponent_defense_weakness": 0.0461,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0037,
"run_prevention": 0.9937,
"strikeout": 1.0082
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "687570",
"profile": {
"available": true,
"pitcher_id": "687570",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 484.0,
"k_percent": 24.4,
"bb_percent": 8.2,
"woba": 0.316,
"xwoba": 0.308,
"sweet_spot_percent": 34.9,
"barrel_batted_rate": 6.8,
"hard_hit_percent": 42.0,
"avg_best_speed": 80.5018,
"avg_hyper_speed": 94.2977,
"whiff_percent": 23.7,
"swing_percent": 47.5
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0876,
"command_and_miss": 0.1357,
"regression_edge": 0.2286,
"xwoba_edge": 0.1,
"barrel_edge": 0.0889,
"hard_hit_edge": -0.5857,
"whiff_edge": -0.2,
"bb_edge": 0.225,
"pitch_design_score": 0.0121
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "687570",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 78,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 78,
"pitch_usage": 0.0,
"release_speed": 90.07941742576352,
"release_spin_rate": 2601.583158009434,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 78,
"pitch_usage": 0.0,
"release_speed": 90.07941742576352,
"release_spin_rate": 2601.583158009434,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.0794,
"release_spin_rate": 2601.5832,
"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.0121,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0863,
"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.01,
"sample_weight": 1.0,
"run_prevention_factor": 0.9991,
"strikeout_factor": 1.0063,
"walk_factor": 0.982,
"homer_factor": 1.0133,
"woba_minus_xwoba": 0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "687570",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 0.9991,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 0.9991,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.982,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0133,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0063,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 2,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 81,
"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/20260923_MIN@SF.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_MIN@SF | home | Cesar Perdomo | Cesar Perdomo | True | 4.2 | 5.1 | 2 | 2 | 2 | 0 | 4/5 | 2/0 | 5/2 | Last 10 before this game (4 available){
"model_context": {
"embedded_season": {
"ERA": 3.724137931034483,
"WHIP": 1.5,
"IP": 19.1,
"games_started": null,
"games_pitched": 4,
"role_avg_IP": 5.111,
"recent_avg_IP": 5.111,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2374,
"sample_weight": 0.45,
"run_prevention_factor": 1.0202,
"strikeout_factor": 0.9679,
"walk_factor": 0.9937,
"homer_factor": 1.0262,
"regression_flag": "neutral",
"k_percent": 14.5,
"bb_percent": 8.4,
"woba": 0.346,
"xwoba": 0.338,
"barrel_percent": 6.3,
"hard_hit_percent": 46.9,
"whiff_percent": 20.0
},
"espn_rank": {
"rank": 313,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 1.0
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "702885",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 4,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 4,
"totals": {
"IP": 19.1,
"ER": 8.0,
"R": 8.0,
"H": 22.0,
"BB": 7.0,
"SO": 12.0,
"HR": 3.0,
"BF": 83.0,
"Pitches": 298.0
},
"per_game": {
"IP": 4.2,
"ER": 2.0,
"R": 2.0,
"H": 5.5,
"BB": 1.75,
"SO": 3.0,
"HR": 0.75,
"BF": 20.75,
"Pitches": 74.5
},
"rates": {
"ERA": 3.7241,
"WHIP": 1.5,
"ER_per_IP": 0.41379,
"H_per_IP": 1.13793,
"BB_per_IP": 0.36207,
"SO_per_IP": 0.62069,
"HR_per_IP": 0.15517
}
},
"last_10": {
"games": 4,
"totals": {
"IP": 19.1,
"ER": 8.0,
"R": 8.0,
"H": 22.0,
"BB": 7.0,
"SO": 12.0,
"HR": 3.0,
"BF": 83.0,
"Pitches": 298.0
},
"per_game": {
"IP": 4.2,
"ER": 2.0,
"R": 2.0,
"H": 5.5,
"BB": 1.75,
"SO": 3.0,
"HR": 0.75,
"BF": 20.75,
"Pitches": 74.5
},
"rates": {
"ERA": 3.7241,
"WHIP": 1.5,
"ER_per_IP": 0.41379,
"H_per_IP": 1.13793,
"BB_per_IP": 0.36207,
"SO_per_IP": 0.62069,
"HR_per_IP": 0.15517
}
},
"season": {
"games": 4,
"totals": {
"IP": 19.1,
"ER": 8.0,
"R": 8.0,
"H": 22.0,
"BB": 7.0,
"SO": 12.0,
"HR": 3.0,
"BF": 83.0,
"Pitches": 298.0
},
"per_game": {
"IP": 4.2,
"ER": 2.0,
"R": 2.0,
"H": 5.5,
"BB": 1.75,
"SO": 3.0,
"HR": 0.75,
"BF": 20.75,
"Pitches": 74.5
},
"rates": {
"ERA": 3.7241,
"WHIP": 1.5,
"ER_per_IP": 0.41379,
"H_per_IP": 1.13793,
"BB_per_IP": 0.36207,
"SO_per_IP": 0.62069,
"HR_per_IP": 0.15517
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.266,
"predicted_H": 5.096,
"predicted_BB": 1.796,
"predicted_SO": 3.865,
"predicted_HR": 0.734,
"predicted_ERA": 4.2034,
"predicted_WHIP": 1.4205
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5847,
"form_weight": 0.4153,
"form_reliability": 0.4444,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.266,
"final": 2.1105,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 5.096,
"final": 2.7009,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.796,
"final": 1.9153,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.865,
"final": 4.5287,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.734,
"final": 0.3048,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.2034,
"final": 4.2034,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4205,
"final": 1.4205,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "insufficient_data"
},
"pitching": {
"IP": 19.1,
"ER": 8,
"H": 22,
"BB": 7,
"SO": 12,
"HR": 3,
"ERA": 3.724137931034482,
"WHIP": 1.4999999999999998,
"K9": 5.586206896551723,
"HR9": 1.3965517241379308,
"games_pitched": 4,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 4,
"error_prone": false
},
"games_count": 4,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 0.9489044831644622,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2.0,
"predicted_H": 1.0,
"predicted_BB": 2.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 4.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.4444,
"prior_weight": 0.5556
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 2,
"predicted_H": 1,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "702885",
"player_name": "Cesar Perdomo",
"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": 2.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"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.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 4.0,
"delta": 3.0,
"percent_delta": 3.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_H",
"before": 1.0,
"after": 4.0,
"delta": 3.0,
"percent_delta": 3.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 2.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.2,
"after": 4.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 1.0,
"after": 4.0,
"delta": 3.0,
"percent_delta": 3.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_H",
"before": 1.0,
"after": 4.0,
"delta": 3.0,
"percent_delta": 3.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.0,
"after": 4.2,
"delta": -0.8,
"percent_delta": -0.16,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SF",
"games": 158,
"wins": 65,
"losses": 93,
"win_pct": 0.4114,
"runs_scored": 663.0,
"runs_allowed": 745.0,
"run_differential": -82.0,
"run_differential_per_game": -0.519,
"avg_runs_scored": 4.1962,
"avg_runs_allowed": 4.7152,
"offense_index": 0.933,
"defense_index": 0.9539,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.9,
"run_differential": -8.0
},
"available": true,
"quality_score": -0.2088
},
"opponent": {
"team": "MIN",
"games": 158,
"wins": 74,
"losses": 84,
"win_pct": 0.4684,
"runs_scored": 717.0,
"runs_allowed": 783.0,
"run_differential": -66.0,
"run_differential_per_game": -0.4177,
"avg_runs_scored": 4.538,
"avg_runs_allowed": 4.9557,
"offense_index": 1.0089,
"defense_index": 0.9076,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 4.7,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.1129
},
"edges": {
"quality_edge": -0.0959,
"offense_edge": -0.067,
"opponent_offense_edge": 0.0089,
"defense_strength": -0.0461,
"opponent_defense_weakness": 0.0924,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9944,
"run_prevention": 1.0108,
"strikeout": 0.9964
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "702885",
"profile": {
"available": true,
"pitcher_id": "702885",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 61.0,
"k_percent": 14.5,
"bb_percent": 8.4,
"woba": 0.346,
"xwoba": 0.338,
"sweet_spot_percent": 37.5,
"barrel_batted_rate": 6.3,
"hard_hit_percent": 46.9,
"avg_best_speed": 81.2421,
"avg_hyper_speed": 94.7299,
"whiff_percent": 20.0,
"swing_percent": 50.3
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.6579,
"command_and_miss": -0.6957,
"regression_edge": 0.2286,
"xwoba_edge": -0.7571,
"barrel_edge": 0.2,
"hard_hit_edge": -1.2857,
"whiff_edge": -0.7286,
"bb_edge": 0.175,
"pitch_design_score": -0.0146
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "702885",
"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.60313256754885,
"release_spin_rate": 2051.5478690156715,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.60313256754885,
"release_spin_rate": 2051.5478690156715,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.6031,
"release_spin_rate": 2051.5479,
"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.0146,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.1042,
"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.2374,
"sample_weight": 0.45,
"run_prevention_factor": 1.0202,
"strikeout_factor": 0.9679,
"walk_factor": 0.9937,
"homer_factor": 1.0262,
"woba_minus_xwoba": 0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "702885",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0091,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 1.0091,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9972,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0118,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9856,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 20,
"Pitches": 91,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 4 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260923_MIN@SF.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_NYM@TEX | away | Nolan McLean | Nolan McLean | True | 6.0 | 7.0 | 3 | 0 | 2 | 2 | 0/3 | 0/1 | 6/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.1795366795366795,
"WHIP": 1.193050193050193,
"IP": 172.2,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.756,
"recent_avg_IP": 6.0,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2313,
"sample_weight": 1.0,
"run_prevention_factor": 0.9803,
"strikeout_factor": 1.0171,
"walk_factor": 1.01,
"homer_factor": 0.962,
"regression_flag": "neutral",
"k_percent": 26.2,
"bb_percent": 9.6,
"woba": 0.293,
"xwoba": 0.297,
"barrel_percent": 6.5,
"hard_hit_percent": 35.6,
"whiff_percent": 23.8
},
"espn_rank": {
"rank": 44,
"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": "690997",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 8.0,
"R": 9.0,
"H": 26.0,
"BB": 15.0,
"SO": 27.0,
"HR": 2.0,
"BF": 128.0,
"Pitches": 473.0
},
"per_game": {
"IP": 6.0,
"ER": 1.6,
"R": 1.8,
"H": 5.2,
"BB": 3.0,
"SO": 5.4,
"HR": 0.4,
"BF": 25.6,
"Pitches": 94.6
},
"rates": {
"ERA": 2.4,
"WHIP": 1.3667,
"ER_per_IP": 0.26667,
"H_per_IP": 0.86667,
"BB_per_IP": 0.5,
"SO_per_IP": 0.9,
"HR_per_IP": 0.06667
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 59.1,
"ER": 19.0,
"R": 22.0,
"H": 54.0,
"BB": 28.0,
"SO": 54.0,
"HR": 7.0,
"BF": 253.0,
"Pitches": 950.0
},
"per_game": {
"IP": 6.0,
"ER": 1.9,
"R": 2.2,
"H": 5.4,
"BB": 2.8,
"SO": 5.4,
"HR": 0.7,
"BF": 25.3,
"Pitches": 95.0
},
"rates": {
"ERA": 2.882,
"WHIP": 1.382,
"ER_per_IP": 0.32022,
"H_per_IP": 0.91011,
"BB_per_IP": 0.47191,
"SO_per_IP": 0.91011,
"HR_per_IP": 0.11798
}
},
"season": {
"games": 30,
"totals": {
"IP": 172.2,
"ER": 61.0,
"R": 73.0,
"H": 137.0,
"BB": 69.0,
"SO": 189.0,
"HR": 17.0,
"BF": 722.0,
"Pitches": 2832.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0333,
"R": 2.4333,
"H": 4.5667,
"BB": 2.3,
"SO": 6.3,
"HR": 0.5667,
"BF": 24.0667,
"Pitches": 94.4
},
"rates": {
"ERA": 3.1795,
"WHIP": 1.1931,
"ER_per_IP": 0.35328,
"H_per_IP": 0.79344,
"BB_per_IP": 0.39961,
"SO_per_IP": 1.09459,
"HR_per_IP": 0.09846
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.975,
"predicted_H": 5.25,
"predicted_BB": 2.714,
"predicted_SO": 5.596,
"predicted_HR": 0.589,
"predicted_ERA": 2.9907,
"predicted_WHIP": 1.3401
}
},
"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": 0.0,
"form": 1.975,
"final": 1.1645,
"source": "model_form_blend"
},
"predicted_H": {
"model": 0.0,
"form": 5.25,
"final": 3.0955,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.714,
"final": 1.6002,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 5.596,
"final": 5.3514,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.589,
"final": 0.3473,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.9907,
"final": 2.9907,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3401,
"final": 1.3401,
"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": 19,
"H": 54,
"BB": 28,
"SO": 54,
"HR": 7,
"ERA": 2.8820224719101124,
"WHIP": 1.3820224719101124,
"K9": 8.191011235955056,
"HR9": 1.0617977528089888,
"games_pitched": 10,
"quality_starts": 8,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-17T00:00:00"
},
"recent_form_boost": 0.8224918833273858,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_BB": 0.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
},
{
"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": 0,
"predicted_H": 0,
"predicted_BB": 0,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "690997",
"player_name": "Nolan McLean",
"position": "Starter",
"team": "NYM",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 0.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 6.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": 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.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 0.0,
"predicted_H": 0.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 0.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": 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.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 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": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYM",
"games": 157,
"wins": 72,
"losses": 85,
"win_pct": 0.4586,
"runs_scored": 674.0,
"runs_allowed": 712.0,
"run_differential": -38.0,
"run_differential_per_game": -0.242,
"avg_runs_scored": 4.293,
"avg_runs_allowed": 4.535,
"offense_index": 0.9584,
"defense_index": 0.9877,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 3.9,
"run_differential": 4.0
},
"available": true,
"quality_score": -0.0999
},
"opponent": {
"team": "TEX",
"games": 157,
"wins": 78,
"losses": 79,
"win_pct": 0.4968,
"runs_scored": 656.0,
"runs_allowed": 693.0,
"run_differential": -37.0,
"run_differential_per_game": -0.2357,
"avg_runs_scored": 4.1783,
"avg_runs_allowed": 4.414,
"offense_index": 0.9328,
"defense_index": 1.0148,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.2,
"run_differential": 4.0
},
"available": true,
"quality_score": 0.0033
},
"edges": {
"quality_edge": -0.1032,
"offense_edge": -0.0416,
"opponent_offense_edge": -0.0672,
"defense_strength": -0.0123,
"opponent_defense_weakness": -0.0148,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9982,
"run_prevention": 0.9956,
"strikeout": 1.0023
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "690997",
"profile": {
"available": true,
"pitcher_id": "690997",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 690.0,
"k_percent": 26.2,
"bb_percent": 9.6,
"woba": 0.293,
"xwoba": 0.297,
"sweet_spot_percent": 33.6,
"barrel_batted_rate": 6.5,
"hard_hit_percent": 35.6,
"avg_best_speed": 76.8262,
"avg_hyper_speed": 93.5936,
"whiff_percent": 23.8,
"swing_percent": 44.2
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3367,
"command_and_miss": 0.1864,
"regression_edge": -0.1143,
"xwoba_edge": 0.4143,
"barrel_edge": 0.1556,
"hard_hit_edge": 0.3286,
"whiff_edge": -0.1857,
"bb_edge": -0.125,
"pitch_design_score": 0.0713
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "690997",
"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": 91.13702714608331,
"release_spin_rate": 2501.49716928675,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 91.13702714608331,
"release_spin_rate": 2501.49716928675,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.137,
"release_spin_rate": 2501.4972,
"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.0713,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.5093,
"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.2313,
"sample_weight": 1.0,
"run_prevention_factor": 0.9803,
"strikeout_factor": 1.0171,
"walk_factor": 1.01,
"homer_factor": 0.962,
"woba_minus_xwoba": -0.004,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "690997",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9803,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9803,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 1.01,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 0.962,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0171,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 0,
"predicted_R": 0,
"predicted_ER": 0,
"predicted_BB": 0,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 18,
"Pitches": 76,
"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/20260923_NYM@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"
}
} |
| 20260923 | 20260923_NYM@TEX | home | Cody Bradford | Cody Bradford | True | 4.2 | 4.1 | -1 | 2 | 2 | 0 | 4/4 | 0/0 | 11/1 | Last 10 before this game (8 available){
"model_context": {
"embedded_season": {
"ERA": 4.189655172413794,
"WHIP": 1.5,
"IP": 38.2,
"games_started": null,
"games_pitched": 8,
"role_avg_IP": 4.905,
"recent_avg_IP": 4.6,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3487,
"sample_weight": 0.6,
"run_prevention_factor": 1.0296,
"strikeout_factor": 0.939,
"walk_factor": 0.9616,
"homer_factor": 1.0387,
"regression_flag": "neutral",
"k_percent": 11.8,
"bb_percent": 5.9,
"woba": 0.354,
"xwoba": 0.345,
"barrel_percent": 9.5,
"hard_hit_percent": 37.0,
"whiff_percent": 17.4
},
"espn_rank": {
"rank": 283,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.6818181818181818,
"last_10": 0.3181818181818182
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6154,
"prior_weight": 0.3846
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "674003",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 8,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.1,
"ER": 13.0,
"R": 13.0,
"H": 30.0,
"BB": 6.0,
"SO": 10.0,
"HR": 3.0,
"BF": 104.0,
"Pitches": 402.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6,
"R": 2.6,
"H": 6.0,
"BB": 1.2,
"SO": 2.0,
"HR": 0.6,
"BF": 20.8,
"Pitches": 80.4
},
"rates": {
"ERA": 5.0143,
"WHIP": 1.5429,
"ER_per_IP": 0.55714,
"H_per_IP": 1.28571,
"BB_per_IP": 0.25714,
"SO_per_IP": 0.42857,
"HR_per_IP": 0.12857
}
},
"last_10": {
"games": 8,
"totals": {
"IP": 38.2,
"ER": 18.0,
"R": 18.0,
"H": 48.0,
"BB": 10.0,
"SO": 20.0,
"HR": 4.0,
"BF": 169.0,
"Pitches": 628.0
},
"per_game": {
"IP": 4.2,
"ER": 2.25,
"R": 2.25,
"H": 6.0,
"BB": 1.25,
"SO": 2.5,
"HR": 0.5,
"BF": 21.125,
"Pitches": 78.5
},
"rates": {
"ERA": 4.1897,
"WHIP": 1.5,
"ER_per_IP": 0.46552,
"H_per_IP": 1.24138,
"BB_per_IP": 0.25862,
"SO_per_IP": 0.51724,
"HR_per_IP": 0.10345
}
},
"season": {
"games": 8,
"totals": {
"IP": 38.2,
"ER": 18.0,
"R": 18.0,
"H": 48.0,
"BB": 10.0,
"SO": 20.0,
"HR": 4.0,
"BF": 169.0,
"Pitches": 628.0
},
"per_game": {
"IP": 4.2,
"ER": 2.25,
"R": 2.25,
"H": 6.0,
"BB": 1.25,
"SO": 2.5,
"HR": 0.5,
"BF": 21.125,
"Pitches": 78.5
},
"rates": {
"ERA": 4.1897,
"WHIP": 1.5,
"ER_per_IP": 0.46552,
"H_per_IP": 1.24138,
"BB_per_IP": 0.25862,
"SO_per_IP": 0.51724,
"HR_per_IP": 0.10345
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.431,
"predicted_H": 5.411,
"predicted_BB": 1.416,
"predicted_SO": 2.994,
"predicted_HR": 0.612,
"predicted_ERA": 4.6884,
"predicted_WHIP": 1.463
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5125,
"form_weight": 0.4875,
"form_reliability": 0.6154,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6154,
"prior_weight": 0.3846
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.431,
"final": 2.2101,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.411,
"final": 4.1754,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.416,
"final": 0.6903,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 11.0,
"form": 2.994,
"final": 7.097,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.612,
"final": 1.3233,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.6884,
"final": 4.6884,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.463,
"final": 1.463,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 38.2,
"ER": 18,
"H": 48,
"BB": 10,
"SO": 20,
"HR": 4,
"ERA": 4.189655172413794,
"WHIP": 1.5,
"K9": 4.655172413793104,
"HR9": 0.9310344827586208,
"games_pitched": 8,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 8,
"error_prone": false
},
"games_count": 8,
"latest_game_date": "2026-09-17T00:00:00"
},
"recent_form_boost": 0.9725500003362969,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_BB": 0.0,
"predicted_SO": 11.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6154,
"prior_weight": 0.3846
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 0,
"predicted_SO": 11,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "674003",
"player_name": "Cody Bradford",
"position": "Starter",
"team": "TEX",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 2.0,
"predicted_IP": 4.6667,
"predicted_SO": 11.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 4.2,
"predicted_SO": 11.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": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 11.0,
"after": 11.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_H",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"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": 4.2,
"predicted_R": 2.0,
"predicted_SO": 11.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": 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": 11.0,
"after": 11.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 11.0,
"after": 11.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_H",
"before": 3.0,
"after": 4.0,
"delta": 1.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TEX",
"games": 157,
"wins": 78,
"losses": 79,
"win_pct": 0.4968,
"runs_scored": 656.0,
"runs_allowed": 693.0,
"run_differential": -37.0,
"run_differential_per_game": -0.2357,
"avg_runs_scored": 4.1783,
"avg_runs_allowed": 4.414,
"offense_index": 0.9328,
"defense_index": 1.0148,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.2,
"run_differential": 4.0
},
"available": true,
"quality_score": 0.0033
},
"opponent": {
"team": "NYM",
"games": 157,
"wins": 72,
"losses": 85,
"win_pct": 0.4586,
"runs_scored": 674.0,
"runs_allowed": 712.0,
"run_differential": -38.0,
"run_differential_per_game": -0.242,
"avg_runs_scored": 4.293,
"avg_runs_allowed": 4.535,
"offense_index": 0.9584,
"defense_index": 0.9877,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 3.9,
"run_differential": 4.0
},
"available": true,
"quality_score": -0.0999
},
"edges": {
"quality_edge": 0.1032,
"offense_edge": -0.0672,
"opponent_offense_edge": -0.0416,
"defense_strength": 0.0148,
"opponent_defense_weakness": 0.0123,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0062,
"run_prevention": 0.9867,
"strikeout": 1.0064
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "674003",
"profile": {
"available": true,
"pitcher_id": "674003",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 150.0,
"k_percent": 11.8,
"bb_percent": 5.9,
"woba": 0.354,
"xwoba": 0.345,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 9.5,
"hard_hit_percent": 37.0,
"avg_best_speed": 78.5393,
"avg_hyper_speed": 94.3216,
"whiff_percent": 17.4,
"swing_percent": 49.5
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.6378,
"command_and_miss": -0.8743,
"regression_edge": 0.2571,
"xwoba_edge": -0.9571,
"barrel_edge": -0.5111,
"hard_hit_edge": 0.1286,
"whiff_edge": -1.1,
"bb_edge": 0.8,
"pitch_design_score": -0.28
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "674003",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 82,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 82,
"pitch_usage": 0.0,
"release_speed": 84.66333718879456,
"release_spin_rate": 1904.8000427733539,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 84.66333718879456,
"release_spin_rate": 1904.8000427733539,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.6633,
"release_spin_rate": 1904.8,
"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.3487,
"sample_weight": 0.6,
"run_prevention_factor": 1.0296,
"strikeout_factor": 0.939,
"walk_factor": 0.9616,
"homer_factor": 1.0387,
"woba_minus_xwoba": 0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "674003",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0178,
"adjusted": 3
},
"predicted_H": {
"original": 7.0,
"factor": 1.0178,
"adjusted": 7
},
"predicted_BB": {
"original": 1.0,
"factor": 0.977,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0232,
"adjusted": 1
},
"predicted_SO": {
"original": 2.0,
"factor": 0.9634,
"adjusted": 2
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 4,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 11,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 18,
"Pitches": 83,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 8 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260923_NYM@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"
}
} |
| 20260923 | 20260923_SD@LAD | away | Robbie Ray | Robbie Ray | True | 5.0 | 3.1 | -5 | 3 | 1 | -2 | 5/7 | 2/1 | 5/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.603696098562628,
"WHIP": 1.3305954825462012,
"IP": 162.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.379,
"recent_avg_IP": 4.933,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3059,
"sample_weight": 1.0,
"run_prevention_factor": 1.026,
"strikeout_factor": 0.9897,
"walk_factor": 1.06,
"homer_factor": 1.04,
"regression_flag": "neutral",
"k_percent": 20.1,
"bb_percent": 12.1,
"woba": 0.313,
"xwoba": 0.334,
"barrel_percent": 8.3,
"hard_hit_percent": 38.1,
"whiff_percent": 25.1
},
"espn_rank": {
"rank": 72,
"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": "592662",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.2,
"ER": 16.0,
"R": 16.0,
"H": 20.0,
"BB": 15.0,
"SO": 21.0,
"HR": 4.0,
"BF": 107.0,
"Pitches": 442.0
},
"per_game": {
"IP": 5.0,
"ER": 3.2,
"R": 3.2,
"H": 4.0,
"BB": 3.0,
"SO": 4.2,
"HR": 0.8,
"BF": 21.4,
"Pitches": 88.4
},
"rates": {
"ERA": 5.8378,
"WHIP": 1.4189,
"ER_per_IP": 0.64865,
"H_per_IP": 0.81081,
"BB_per_IP": 0.60811,
"SO_per_IP": 0.85135,
"HR_per_IP": 0.16216
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.2,
"ER": 24.0,
"R": 24.0,
"H": 42.0,
"BB": 29.0,
"SO": 42.0,
"HR": 7.0,
"BF": 220.0,
"Pitches": 875.0
},
"per_game": {
"IP": 5.1,
"ER": 2.4,
"R": 2.4,
"H": 4.2,
"BB": 2.9,
"SO": 4.2,
"HR": 0.7,
"BF": 22.0,
"Pitches": 87.5
},
"rates": {
"ERA": 4.1806,
"WHIP": 1.3742,
"ER_per_IP": 0.46452,
"H_per_IP": 0.8129,
"BB_per_IP": 0.56129,
"SO_per_IP": 0.8129,
"HR_per_IP": 0.13548
}
},
"season": {
"games": 30,
"totals": {
"IP": 162.1,
"ER": 65.0,
"R": 73.0,
"H": 133.0,
"BB": 83.0,
"SO": 138.0,
"HR": 22.0,
"BF": 685.0,
"Pitches": 2770.0
},
"per_game": {
"IP": 5.1,
"ER": 2.1667,
"R": 2.4333,
"H": 4.4333,
"BB": 2.7667,
"SO": 4.6,
"HR": 0.7333,
"BF": 22.8333,
"Pitches": 92.3333
},
"rates": {
"ERA": 3.6037,
"WHIP": 1.3306,
"ER_per_IP": 0.40041,
"H_per_IP": 0.8193,
"BB_per_IP": 0.51129,
"SO_per_IP": 0.8501,
"HR_per_IP": 0.13552
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.738,
"predicted_H": 4.317,
"predicted_BB": 2.807,
"predicted_SO": 4.393,
"predicted_HR": 0.761,
"predicted_ERA": 4.7789,
"predicted_WHIP": 1.3815
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.738,
"final": 3.2559,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.317,
"final": 4.5973,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.807,
"final": 2.4758,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.393,
"final": 3.411,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.761,
"final": 1.2695,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.7789,
"final": 4.7789,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3815,
"final": 1.3815,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 51.2,
"ER": 24,
"H": 42,
"BB": 29,
"SO": 42,
"HR": 7,
"ERA": 4.180645161290323,
"WHIP": 1.3741935483870966,
"K9": 7.316129032258064,
"HR9": 1.2193548387096773,
"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-16T00:00:00"
},
"recent_form_boost": 0.9683912127945838,
"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": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 2.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "592662",
"player_name": "Robbie Ray",
"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": 4.0,
"predicted_H": 5.0,
"predicted_HR": 2.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": 4.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 5.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": 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": 2.0,
"after": 5.0,
"delta": 3.0,
"percent_delta": 1.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 5.0,
"delta": 3.0,
"percent_delta": 1.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 2.0,
"after": 5.0,
"delta": 3.0,
"percent_delta": 1.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 5.0,
"delta": 3.0,
"percent_delta": 1.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SD",
"games": 157,
"wins": 87,
"losses": 70,
"win_pct": 0.5541,
"runs_scored": 690.0,
"runs_allowed": 656.0,
"run_differential": 34.0,
"run_differential_per_game": 0.2166,
"avg_runs_scored": 4.3949,
"avg_runs_allowed": 4.1783,
"offense_index": 0.9798,
"defense_index": 1.0735,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.4,
"avg_runs_allowed": 4.9,
"run_differential": 15.0
},
"available": true,
"quality_score": 0.1775
},
"opponent": {
"team": "LAD",
"games": 157,
"wins": 97,
"losses": 60,
"win_pct": 0.6178,
"runs_scored": 787.0,
"runs_allowed": 587.0,
"run_differential": 200.0,
"run_differential_per_game": 1.2739,
"avg_runs_scored": 5.0127,
"avg_runs_allowed": 3.7389,
"offense_index": 1.1176,
"defense_index": 1.1997,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 2.6,
"run_differential": 27.0
},
"available": true,
"quality_score": 0.3263
},
"edges": {
"quality_edge": -0.1488,
"offense_edge": -0.0202,
"opponent_offense_edge": 0.1176,
"defense_strength": 0.0735,
"opponent_defense_weakness": -0.1997,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9915,
"run_prevention": 1.0189,
"strikeout": 0.9861
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "592662",
"profile": {
"available": true,
"pitcher_id": "592662",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 633.0,
"k_percent": 20.1,
"bb_percent": 12.1,
"woba": 0.313,
"xwoba": 0.334,
"sweet_spot_percent": 32.5,
"barrel_batted_rate": 8.3,
"hard_hit_percent": 38.1,
"avg_best_speed": 78.8704,
"avg_hyper_speed": 94.0821,
"whiff_percent": 25.1,
"swing_percent": 46.1
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.3044,
"command_and_miss": -0.2657,
"regression_edge": -0.6,
"xwoba_edge": -0.6429,
"barrel_edge": -0.2444,
"hard_hit_edge": -0.0286,
"whiff_edge": 0.0,
"bb_edge": -0.75,
"pitch_design_score": -0.0795
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "592662",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 89,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 89,
"pitch_usage": 0.0,
"release_speed": 88.44381407397167,
"release_spin_rate": 2131.493650416326,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 89,
"pitch_usage": 0.0,
"release_speed": 88.44381407397167,
"release_spin_rate": 2131.493650416326,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.4438,
"release_spin_rate": 2131.4937,
"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.0795,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5679,
"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.3059,
"sample_weight": 1.0,
"run_prevention_factor": 1.026,
"strikeout_factor": 0.9897,
"walk_factor": 1.06,
"homer_factor": 1.04,
"woba_minus_xwoba": -0.021,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "592662",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.026,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 1.026,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.06,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.04,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9897,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 22,
"Pitches": 97,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260923_SD@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"
}
} |
| 20260923 | 20260923_SD@LAD | home | Yoshinobu Yamamoto | Yoshinobu Yamamoto | True | 6.2 | 6.0 | -2 | 3 | 2 | -1 | 6/5 | 2/1 | 8/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.5139664804469275,
"WHIP": 0.8659217877094972,
"IP": 179.0,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 6.63,
"recent_avg_IP": 6.733,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.6337,
"sample_weight": 1.0,
"run_prevention_factor": 0.9461,
"strikeout_factor": 1.0406,
"walk_factor": 0.938,
"homer_factor": 0.9395,
"regression_flag": "neutral",
"k_percent": 26.1,
"bb_percent": 6.0,
"woba": 0.241,
"xwoba": 0.266,
"barrel_percent": 6.6,
"hard_hit_percent": 36.0,
"whiff_percent": 28.0
},
"espn_rank": {
"rank": 6,
"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": "808967",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 6.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 33.2,
"ER": 8.0,
"R": 8.0,
"H": 18.0,
"BB": 7.0,
"SO": 42.0,
"HR": 4.0,
"BF": 126.0,
"Pitches": 486.0
},
"per_game": {
"IP": 6.2,
"ER": 1.6,
"R": 1.6,
"H": 3.6,
"BB": 1.4,
"SO": 8.4,
"HR": 0.8,
"BF": 25.2,
"Pitches": 97.2
},
"rates": {
"ERA": 2.1386,
"WHIP": 0.7426,
"ER_per_IP": 0.23762,
"H_per_IP": 0.53465,
"BB_per_IP": 0.20792,
"SO_per_IP": 1.24752,
"HR_per_IP": 0.11881
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 68.1,
"ER": 15.0,
"R": 15.0,
"H": 38.0,
"BB": 16.0,
"SO": 72.0,
"HR": 7.0,
"BF": 257.0,
"Pitches": 988.0
},
"per_game": {
"IP": 6.2,
"ER": 1.5,
"R": 1.5,
"H": 3.8,
"BB": 1.6,
"SO": 7.2,
"HR": 0.7,
"BF": 25.7,
"Pitches": 98.8
},
"rates": {
"ERA": 1.9756,
"WHIP": 0.7902,
"ER_per_IP": 0.21951,
"H_per_IP": 0.5561,
"BB_per_IP": 0.23415,
"SO_per_IP": 1.05366,
"HR_per_IP": 0.10244
}
},
"season": {
"games": 27,
"totals": {
"IP": 179.0,
"ER": 50.0,
"R": 51.0,
"H": 114.0,
"BB": 41.0,
"SO": 178.0,
"HR": 19.0,
"BF": 682.0,
"Pitches": 2646.0
},
"per_game": {
"IP": 6.2,
"ER": 1.8519,
"R": 1.8889,
"H": 4.2222,
"BB": 1.5185,
"SO": 6.5926,
"HR": 0.7037,
"BF": 25.2593,
"Pitches": 98.0
},
"rates": {
"ERA": 2.514,
"WHIP": 0.8659,
"ER_per_IP": 0.27933,
"H_per_IP": 0.63687,
"BB_per_IP": 0.22905,
"SO_per_IP": 0.99441,
"HR_per_IP": 0.10615
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.2,
"predicted_ER": 1.879,
"predicted_H": 4.186,
"predicted_BB": 1.637,
"predicted_SO": 7.327,
"predicted_HR": 0.776,
"predicted_ERA": 2.5362,
"predicted_WHIP": 0.8734
}
},
"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.2,
"form": 6.2,
"final": 6.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 1.879,
"final": 2.7613,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.186,
"final": 4.9406,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.637,
"final": 1.788,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 7.327,
"final": 6.359,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.776,
"final": 0.8692,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.5362,
"final": 2.5362,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.8734,
"final": 0.8734,
"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": 68.1,
"ER": 15,
"H": 38,
"BB": 16,
"SO": 72,
"HR": 7,
"ERA": 1.9756097560975612,
"WHIP": 0.7902439024390244,
"K9": 9.482926829268294,
"HR9": 0.9219512195121952,
"games_pitched": 10,
"quality_starts": 8,
"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-15T00:00:00"
},
"recent_form_boost": 0.7057259885616964,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_BB": 2.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
}
},
{
"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.2,
"predicted_ER": 3,
"predicted_H": 6,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "808967",
"player_name": "Yoshinobu Yamamoto",
"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": 4.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 6.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 6.2,
"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": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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.6667,
"after": 6.2,
"delta": -0.4667,
"percent_delta": -0.07,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 7.0,
"delta": 2.0,
"percent_delta": 0.4,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 3,
"boosted_metrics": 1,
"deboosted_metrics": 2,
"better_metrics": 2,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 7.0,
"delta": 2.0,
"percent_delta": 0.4,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 6.2,
"predicted_R": 3.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.2,
"after": 6.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 8.0,
"delta": 1.0,
"percent_delta": 0.1429,
"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": 7.0,
"after": 8.0,
"delta": 1.0,
"percent_delta": 0.1429,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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.6667,
"after": 6.2,
"delta": -0.4667,
"percent_delta": -0.07,
"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": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAD",
"games": 157,
"wins": 97,
"losses": 60,
"win_pct": 0.6178,
"runs_scored": 787.0,
"runs_allowed": 587.0,
"run_differential": 200.0,
"run_differential_per_game": 1.2739,
"avg_runs_scored": 5.0127,
"avg_runs_allowed": 3.7389,
"offense_index": 1.1176,
"defense_index": 1.1997,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.3,
"avg_runs_allowed": 2.6,
"run_differential": 27.0
},
"available": true,
"quality_score": 0.3263
},
"opponent": {
"team": "SD",
"games": 157,
"wins": 87,
"losses": 70,
"win_pct": 0.5541,
"runs_scored": 690.0,
"runs_allowed": 656.0,
"run_differential": 34.0,
"run_differential_per_game": 0.2166,
"avg_runs_scored": 4.3949,
"avg_runs_allowed": 4.1783,
"offense_index": 0.9798,
"defense_index": 1.0735,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.4,
"avg_runs_allowed": 4.9,
"run_differential": 15.0
},
"available": true,
"quality_score": 0.1775
},
"edges": {
"quality_edge": 0.1488,
"offense_edge": 0.1176,
"opponent_offense_edge": -0.0202,
"defense_strength": 0.1997,
"opponent_defense_weakness": -0.0735,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0128,
"run_prevention": 0.9694,
"strikeout": 1.0061
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "808967",
"profile": {
"available": true,
"pitcher_id": "808967",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 656.0,
"k_percent": 26.1,
"bb_percent": 6.0,
"woba": 0.241,
"xwoba": 0.266,
"sweet_spot_percent": 29.3,
"barrel_batted_rate": 6.6,
"hard_hit_percent": 36.0,
"avg_best_speed": 76.2559,
"avg_hyper_speed": 93.8323,
"whiff_percent": 28.0,
"swing_percent": 49.3
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.9849,
"command_and_miss": 0.57,
"regression_edge": -0.7143,
"xwoba_edge": 1.3,
"barrel_edge": 0.1333,
"hard_hit_edge": 0.2714,
"whiff_edge": 0.4143,
"bb_edge": 0.775,
"pitch_design_score": 0.0672
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "808967",
"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": 91.06397663750431,
"release_spin_rate": 2177.495703419384,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 91.06397663750431,
"release_spin_rate": 2177.495703419384,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.064,
"release_spin_rate": 2177.4957,
"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.0672,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.4801,
"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.6337,
"sample_weight": 1.0,
"run_prevention_factor": 0.9461,
"strikeout_factor": 1.0406,
"walk_factor": 0.938,
"homer_factor": 0.9395,
"woba_minus_xwoba": -0.025,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "808967",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9461,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9461,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.938,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9395,
"adjusted": 1
},
"predicted_SO": {
"original": 8.0,
"factor": 1.0406,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.2,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 8,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 28,
"Pitches": 122,
"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/20260923_SD@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"
}
} |
| 20260923 | 20260923_STL@PIT | away | Matthew Liberatore | Matthew Liberatore | True | 5.0 | 5.2 | 2 | 3 | 1 | -2 | 6/6 | 1/0 | 4/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.363839285714286,
"WHIP": 1.4866071428571428,
"IP": 149.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 4.978,
"recent_avg_IP": 4.867,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3828,
"sample_weight": 1.0,
"run_prevention_factor": 1.0325,
"strikeout_factor": 0.9966,
"walk_factor": 0.986,
"homer_factor": 1.0837,
"regression_flag": "neutral",
"k_percent": 22.7,
"bb_percent": 8.4,
"woba": 0.357,
"xwoba": 0.341,
"barrel_percent": 9.2,
"hard_hit_percent": 41.9,
"whiff_percent": 23.7
},
"espn_rank": {
"rank": 850,
"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": "669461",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.1,
"ER": 19.0,
"R": 20.0,
"H": 31.0,
"BB": 11.0,
"SO": 23.0,
"HR": 6.0,
"BF": 111.0,
"Pitches": 420.0
},
"per_game": {
"IP": 5.0,
"ER": 3.8,
"R": 4.0,
"H": 6.2,
"BB": 2.2,
"SO": 4.6,
"HR": 1.2,
"BF": 22.2,
"Pitches": 84.0
},
"rates": {
"ERA": 7.0274,
"WHIP": 1.726,
"ER_per_IP": 0.78082,
"H_per_IP": 1.27397,
"BB_per_IP": 0.45205,
"SO_per_IP": 0.94521,
"HR_per_IP": 0.24658
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.1,
"ER": 32.0,
"R": 33.0,
"H": 55.0,
"BB": 17.0,
"SO": 53.0,
"HR": 9.0,
"BF": 215.0,
"Pitches": 861.0
},
"per_game": {
"IP": 5.0,
"ER": 3.2,
"R": 3.3,
"H": 5.5,
"BB": 1.7,
"SO": 5.3,
"HR": 0.9,
"BF": 21.5,
"Pitches": 86.1
},
"rates": {
"ERA": 5.7219,
"WHIP": 1.4305,
"ER_per_IP": 0.63576,
"H_per_IP": 1.09272,
"BB_per_IP": 0.33775,
"SO_per_IP": 1.05298,
"HR_per_IP": 0.17881
}
},
"season": {
"games": 30,
"totals": {
"IP": 149.1,
"ER": 89.0,
"R": 95.0,
"H": 167.0,
"BB": 55.0,
"SO": 148.0,
"HR": 27.0,
"BF": 652.0,
"Pitches": 2529.0
},
"per_game": {
"IP": 5.0,
"ER": 2.9667,
"R": 3.1667,
"H": 5.5667,
"BB": 1.8333,
"SO": 4.9333,
"HR": 0.9,
"BF": 21.7333,
"Pitches": 84.3
},
"rates": {
"ERA": 5.3638,
"WHIP": 1.4866,
"ER_per_IP": 0.59598,
"H_per_IP": 1.1183,
"BB_per_IP": 0.3683,
"SO_per_IP": 0.99107,
"HR_per_IP": 0.1808
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 3.334,
"predicted_H": 5.755,
"predicted_BB": 1.963,
"predicted_SO": 4.921,
"predicted_HR": 1.005,
"predicted_ERA": 6.0018,
"predicted_WHIP": 1.5436
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 3.334,
"final": 3.1969,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.755,
"final": 5.8555,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.963,
"final": 1.5678,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.921,
"final": 4.543,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.005,
"final": 1.0029,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.0018,
"final": 6.0018,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5436,
"final": 1.5436,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 50.1,
"ER": 32,
"H": 55,
"BB": 17,
"SO": 53,
"HR": 9,
"ERA": 5.721854304635762,
"WHIP": 1.4304635761589406,
"K9": 9.47682119205298,
"HR9": 1.6092715231788082,
"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-16T00:00:00"
},
"recent_form_boost": 1.143183992115242,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 4.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": "669461",
"player_name": "Matthew Liberatore",
"position": "Starter",
"team": "STL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": "STL",
"games": 157,
"wins": 76,
"losses": 81,
"win_pct": 0.4841,
"runs_scored": 704.0,
"runs_allowed": 729.0,
"run_differential": -25.0,
"run_differential_per_game": -0.1592,
"avg_runs_scored": 4.4841,
"avg_runs_allowed": 4.6433,
"offense_index": 1.0009,
"defense_index": 0.9649,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 4.9,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.0681
},
"opponent": {
"team": "PIT",
"games": 157,
"wins": 80,
"losses": 77,
"win_pct": 0.5096,
"runs_scored": 750.0,
"runs_allowed": 719.0,
"run_differential": 31.0,
"run_differential_per_game": 0.1975,
"avg_runs_scored": 4.7771,
"avg_runs_allowed": 4.5796,
"offense_index": 1.0663,
"defense_index": 0.9783,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.6,
"run_differential": -5.0
},
"available": true,
"quality_score": 0.0674
},
"edges": {
"quality_edge": -0.1355,
"offense_edge": 0.0009,
"opponent_offense_edge": 0.0663,
"defense_strength": -0.0351,
"opponent_defense_weakness": 0.0217,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9909,
"run_prevention": 1.0209,
"strikeout": 0.9906
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669461",
"profile": {
"available": true,
"pitcher_id": "669461",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 627.0,
"k_percent": 22.7,
"bb_percent": 8.4,
"woba": 0.357,
"xwoba": 0.341,
"sweet_spot_percent": 40.1,
"barrel_batted_rate": 9.2,
"hard_hit_percent": 41.9,
"avg_best_speed": 79.4709,
"avg_hyper_speed": 94.5677,
"whiff_percent": 23.7,
"swing_percent": 46.2
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.7627,
"command_and_miss": 0.0164,
"regression_edge": 0.4571,
"xwoba_edge": -0.8429,
"barrel_edge": -0.4444,
"hard_hit_edge": -0.5714,
"whiff_edge": -0.2,
"bb_edge": 0.175,
"pitch_design_score": -0.0715
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669461",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 88,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 88.58620610763555,
"release_spin_rate": 2399.3056061920533,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 88.58620610763555,
"release_spin_rate": 2399.3056061920533,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.5862,
"release_spin_rate": 2399.3056,
"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.0715,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.511,
"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.3828,
"sample_weight": 1.0,
"run_prevention_factor": 1.0325,
"strikeout_factor": 0.9966,
"walk_factor": 0.986,
"homer_factor": 1.0837,
"woba_minus_xwoba": 0.016,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669461",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0325,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 1.0325,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.986,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0837,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9966,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 85,
"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/20260923_STL@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"
}
} |
| 20260923 | 20260923_STL@PIT | home | Lake Bachar | Lake Bachar | True | 5.0 | 1.2 | -10 | 2 | 0 | -2 | 2/1 | 3/1 | 5/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.024,
"WHIP": 1.068,
"IP": 83.1,
"games_started": null,
"games_pitched": 50,
"role_avg_IP": 2.121,
"recent_avg_IP": 1.867,
"last_start_IP": 1.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.3229,
"sample_weight": 1.0,
"run_prevention_factor": 0.9726,
"strikeout_factor": 1.0451,
"walk_factor": 1.02,
"homer_factor": 0.9734,
"regression_flag": "neutral",
"k_percent": 25.2,
"bb_percent": 10.1,
"woba": 0.288,
"xwoba": 0.29,
"barrel_percent": 7.8,
"hard_hit_percent": 34.6,
"whiff_percent": 29.7
},
"espn_rank": {
"rank": 143,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 83.1,
"season_ERA": 3.024,
"season_WHIP": 1.068,
"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": 16.977,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7725,
"prior_weight": 0.2275
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669199",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 50,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 8.0,
"ER": 2.0,
"R": 2.0,
"H": 8.0,
"BB": 5.0,
"SO": 10.0,
"HR": 0.0,
"BF": 37.0,
"Pitches": 149.0
},
"per_game": {
"IP": 1.2,
"ER": 0.4,
"R": 0.4,
"H": 1.6,
"BB": 1.0,
"SO": 2.0,
"HR": 0.0,
"BF": 7.4,
"Pitches": 29.8
},
"rates": {
"ERA": 2.25,
"WHIP": 1.625,
"ER_per_IP": 0.25,
"H_per_IP": 1.0,
"BB_per_IP": 0.625,
"SO_per_IP": 1.25,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 17.2,
"ER": 4.0,
"R": 4.0,
"H": 12.0,
"BB": 12.0,
"SO": 19.0,
"HR": 1.0,
"BF": 75.0,
"Pitches": 312.0
},
"per_game": {
"IP": 1.2,
"ER": 0.4,
"R": 0.4,
"H": 1.2,
"BB": 1.2,
"SO": 1.9,
"HR": 0.1,
"BF": 7.5,
"Pitches": 31.2
},
"rates": {
"ERA": 2.0377,
"WHIP": 1.3585,
"ER_per_IP": 0.22642,
"H_per_IP": 0.67925,
"BB_per_IP": 0.67925,
"SO_per_IP": 1.07547,
"HR_per_IP": 0.0566
}
},
"season": {
"games": 50,
"totals": {
"IP": 83.1,
"ER": 28.0,
"R": 30.0,
"H": 56.0,
"BB": 33.0,
"SO": 87.0,
"HR": 12.0,
"BF": 339.0,
"Pitches": 1363.0
},
"per_game": {
"IP": 1.2,
"ER": 0.56,
"R": 0.6,
"H": 1.12,
"BB": 0.66,
"SO": 1.74,
"HR": 0.24,
"BF": 6.78,
"Pitches": 27.26
},
"rates": {
"ERA": 3.024,
"WHIP": 1.068,
"ER_per_IP": 0.336,
"H_per_IP": 0.672,
"BB_per_IP": 0.396,
"SO_per_IP": 1.044,
"HR_per_IP": 0.144
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 2.2,
"predicted_ER": 0.814,
"predicted_H": 2.211,
"predicted_BB": 1.411,
"predicted_SO": 2.834,
"predicted_HR": 0.184,
"predicted_ERA": 2.8438,
"predicted_WHIP": 1.4059
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4461,
"form_weight": 0.5539,
"form_reliability": 0.7725,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.977,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7725,
"prior_weight": 0.2275
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 2.2,
"final": 4.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 0.814,
"final": 2.2353,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 2.211,
"final": 3.0091,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.411,
"final": 2.1199,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 2.834,
"final": 3.8003,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.184,
"final": 0.9942,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.8438,
"final": 2.8438,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4059,
"final": 1.4059,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 17.2,
"ER": 4,
"H": 12,
"BB": 12,
"SO": 19,
"HR": 1,
"ERA": 2.0377358490566038,
"WHIP": 1.3584905660377358,
"K9": 9.679245283018867,
"HR9": 0.5094339622641509,
"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-20T00:00:00"
},
"recent_form_boost": 0.8402639427280665,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_BB": 3.0,
"predicted_SO": 5.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.977,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7725,
"prior_weight": 0.2275
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 4,
"predicted_H": 4,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 2
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 4,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669199",
"player_name": "Lake Bachar",
"position": "Starter",
"team": "PIT",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 2.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": 3.0,
"predicted_ER": 4.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 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": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"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": 2,
"boosted_metrics": 0,
"deboosted_metrics": 2,
"better_metrics": 2,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_H",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 4,
"boosted_metrics": 0,
"deboosted_metrics": 4,
"better_metrics": 3,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 2.0,
"delta": -2.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PIT",
"games": 157,
"wins": 80,
"losses": 77,
"win_pct": 0.5096,
"runs_scored": 750.0,
"runs_allowed": 719.0,
"run_differential": 31.0,
"run_differential_per_game": 0.1975,
"avg_runs_scored": 4.7771,
"avg_runs_allowed": 4.5796,
"offense_index": 1.0663,
"defense_index": 0.9783,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.6,
"run_differential": -5.0
},
"available": true,
"quality_score": 0.0674
},
"opponent": {
"team": "STL",
"games": 157,
"wins": 76,
"losses": 81,
"win_pct": 0.4841,
"runs_scored": 704.0,
"runs_allowed": 729.0,
"run_differential": -25.0,
"run_differential_per_game": -0.1592,
"avg_runs_scored": 4.4841,
"avg_runs_allowed": 4.6433,
"offense_index": 1.0009,
"defense_index": 0.9649,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 4.9,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.0681
},
"edges": {
"quality_edge": 0.1355,
"offense_edge": 0.0663,
"opponent_offense_edge": 0.0009,
"defense_strength": -0.0217,
"opponent_defense_weakness": 0.0351,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0047,
"run_prevention": 0.9955,
"strikeout": 1.004
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669199",
"profile": {
"available": true,
"pitcher_id": "669199",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 325.0,
"k_percent": 25.2,
"bb_percent": 10.1,
"woba": 0.288,
"xwoba": 0.29,
"sweet_spot_percent": 30.0,
"barrel_batted_rate": 7.8,
"hard_hit_percent": 34.6,
"avg_best_speed": 78.6165,
"avg_hyper_speed": 93.6408,
"whiff_percent": 29.7,
"swing_percent": 45.1
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.4054,
"command_and_miss": 0.3921,
"regression_edge": -0.0571,
"xwoba_edge": 0.6143,
"barrel_edge": -0.1333,
"hard_hit_edge": 0.4714,
"whiff_edge": 0.6571,
"bb_edge": -0.25,
"pitch_design_score": -0.005
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669199",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 31,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 31,
"pitch_usage": 0.0,
"release_speed": 89.77481249512137,
"release_spin_rate": 2697.8801239344625,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 31,
"pitch_usage": 0.0,
"release_speed": 89.77481249512137,
"release_spin_rate": 2697.8801239344625,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.7748,
"release_spin_rate": 2697.8801,
"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.005,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0355,
"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.3229,
"sample_weight": 1.0,
"run_prevention_factor": 0.9726,
"strikeout_factor": 1.0451,
"walk_factor": 1.02,
"homer_factor": 0.9734,
"woba_minus_xwoba": -0.002,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669199",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9726,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 0.9726,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 1.02,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9734,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0451,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"Pitches": 93,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -10 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260923_STL@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"
}
} |
| 20260923 | 20260923_TB@NYY | away | Mason Englert | Mason Englert | True | 5.0 | 3.2 | -4 | 3 | 8 | 5 | 9/9 | 2/1 | 8/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.542056074766355,
"WHIP": 1.4299065420560748,
"IP": 35.2,
"games_started": null,
"games_pitched": 14,
"role_avg_IP": 4.778,
"recent_avg_IP": 4.778,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3162,
"sample_weight": 0.512,
"run_prevention_factor": 1.0269,
"strikeout_factor": 0.9921,
"walk_factor": 0.959,
"homer_factor": 1.0928,
"regression_flag": "neutral",
"k_percent": 20.4,
"bb_percent": 5.1,
"woba": 0.37,
"xwoba": 0.362,
"barrel_percent": 14.9,
"hard_hit_percent": 38.1,
"whiff_percent": 23.9
},
"espn_rank": {
"rank": 565,
"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": 7.266,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5924,
"prior_weight": 0.4076
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669438",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 14,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.0,
"ER": 8.0,
"R": 8.0,
"H": 24.0,
"BB": 4.0,
"SO": 22.0,
"HR": 5.0,
"BF": 97.0,
"Pitches": 382.0
},
"per_game": {
"IP": 4.2,
"ER": 1.6,
"R": 1.6,
"H": 4.8,
"BB": 0.8,
"SO": 4.4,
"HR": 1.0,
"BF": 19.4,
"Pitches": 76.4
},
"rates": {
"ERA": 3.1304,
"WHIP": 1.2174,
"ER_per_IP": 0.34783,
"H_per_IP": 1.04348,
"BB_per_IP": 0.17391,
"SO_per_IP": 0.95652,
"HR_per_IP": 0.21739
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 29.0,
"ER": 11.0,
"R": 11.0,
"H": 31.0,
"BB": 7.0,
"SO": 28.0,
"HR": 7.0,
"BF": 124.0,
"Pitches": 480.0
},
"per_game": {
"IP": 3.0,
"ER": 1.1,
"R": 1.1,
"H": 3.1,
"BB": 0.7,
"SO": 2.8,
"HR": 0.7,
"BF": 12.4,
"Pitches": 48.0
},
"rates": {
"ERA": 3.4138,
"WHIP": 1.3103,
"ER_per_IP": 0.37931,
"H_per_IP": 1.06897,
"BB_per_IP": 0.24138,
"SO_per_IP": 0.96552,
"HR_per_IP": 0.24138
}
},
"season": {
"games": 14,
"totals": {
"IP": 35.2,
"ER": 18.0,
"R": 19.0,
"H": 43.0,
"BB": 8.0,
"SO": 32.0,
"HR": 9.0,
"BF": 157.0,
"Pitches": 596.0
},
"per_game": {
"IP": 2.2,
"ER": 1.2857,
"R": 1.3571,
"H": 3.0714,
"BB": 0.5714,
"SO": 2.2857,
"HR": 0.6429,
"BF": 11.2143,
"Pitches": 42.5714
},
"rates": {
"ERA": 4.5421,
"WHIP": 1.4299,
"ER_per_IP": 0.50467,
"H_per_IP": 1.20561,
"BB_per_IP": 0.2243,
"SO_per_IP": 0.8972,
"HR_per_IP": 0.25234
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 1.852,
"predicted_H": 4.398,
"predicted_BB": 1.167,
"predicted_SO": 3.982,
"predicted_HR": 0.837,
"predicted_ERA": 3.9501,
"predicted_WHIP": 1.3187
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5222,
"form_weight": 0.4778,
"form_reliability": 0.5924,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.266,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5924,
"prior_weight": 0.4076
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.852,
"final": 2.4515,
"source": "model_form_blend"
},
"predicted_H": {
"model": 9.0,
"form": 4.398,
"final": 6.8012,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.167,
"final": 1.602,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 3.982,
"final": 6.0802,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.837,
"final": 0.3999,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.9501,
"final": 3.9501,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3187,
"final": 1.3187,
"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": 29.0,
"ER": 11,
"H": 31,
"BB": 7,
"SO": 28,
"HR": 7,
"ERA": 3.413793103448276,
"WHIP": 1.3103448275862069,
"K9": 8.689655172413794,
"HR9": 2.1724137931034484,
"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-07-17T00:00:00"
},
"recent_form_boost": 0.8852801017500417,
"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": 9.0,
"predicted_BB": 2.0,
"predicted_SO": 8.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.266,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5924,
"prior_weight": 0.4076
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669438",
"player_name": "Mason Englert",
"position": "Starter",
"team": "TB",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 9.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 9.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 8.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": 9.0,
"after": 9.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": 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": 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": 9.0,
"after": 9.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": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TB",
"games": 157,
"wins": 96,
"losses": 61,
"win_pct": 0.6115,
"runs_scored": 713.0,
"runs_allowed": 627.0,
"run_differential": 86.0,
"run_differential_per_game": 0.5478,
"avg_runs_scored": 4.5414,
"avg_runs_allowed": 3.9936,
"offense_index": 1.0137,
"defense_index": 1.1218,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 2.0,
"run_differential": 28.0
},
"available": true,
"quality_score": 0.267
},
"opponent": {
"team": "NYY",
"games": 157,
"wins": 90,
"losses": 67,
"win_pct": 0.5732,
"runs_scored": 716.0,
"runs_allowed": 582.0,
"run_differential": 134.0,
"run_differential_per_game": 0.8535,
"avg_runs_scored": 4.5605,
"avg_runs_allowed": 3.707,
"offense_index": 1.0179,
"defense_index": 1.2086,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 4.2,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.167
},
"edges": {
"quality_edge": 0.1,
"offense_edge": 0.0137,
"opponent_offense_edge": 0.0179,
"defense_strength": 0.1218,
"opponent_defense_weakness": -0.2086,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0069,
"run_prevention": 0.9857,
"strikeout": 1.0016
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669438",
"profile": {
"available": true,
"pitcher_id": "669438",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 128.0,
"k_percent": 20.4,
"bb_percent": 5.1,
"woba": 0.37,
"xwoba": 0.362,
"sweet_spot_percent": 36.2,
"barrel_batted_rate": 14.9,
"hard_hit_percent": 38.1,
"avg_best_speed": 78.0977,
"avg_hyper_speed": 94.209,
"whiff_percent": 23.9,
"swing_percent": 52.7
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -1.1369,
"command_and_miss": 0.0436,
"regression_edge": 0.2286,
"xwoba_edge": -1.4429,
"barrel_edge": -1.7111,
"hard_hit_edge": -0.0286,
"whiff_edge": -0.1714,
"bb_edge": 1.0,
"pitch_design_score": -0.1879
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669438",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 68,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 68,
"pitch_usage": 0.0,
"release_speed": 86.50786631271794,
"release_spin_rate": 2291.8135563532314,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 68,
"pitch_usage": 0.0,
"release_speed": 86.50786631271794,
"release_spin_rate": 2291.8135563532314,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.5079,
"release_spin_rate": 2291.8136,
"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.1879,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.3423,
"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.3162,
"sample_weight": 0.512,
"run_prevention_factor": 1.0269,
"strikeout_factor": 0.9921,
"walk_factor": 0.959,
"homer_factor": 1.0928,
"woba_minus_xwoba": 0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669438",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0138,
"adjusted": 3
},
"predicted_H": {
"original": 7.0,
"factor": 1.0138,
"adjusted": 7
},
"predicted_BB": {
"original": 1.0,
"factor": 0.979,
"adjusted": 1
},
"predicted_HR": {
"original": 2.0,
"factor": 1.0475,
"adjusted": 2
},
"predicted_SO": {
"original": 5.0,
"factor": 0.996,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 9,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 26,
"Pitches": 105,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 5",
"detail": "Actual minus predicted earned runs was +5; this is the primary run-prevention error."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +4."
}
],
"provenance": {
"prediction": "output/games/20260923_TB@NYY.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_TB@NYY | home | Gerrit Cole | Gerrit Cole | True | 5.2 | 5.2 | 0 | 1 | 2 | 1 | 2/3 | 5/3 | 5/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6346153846153846,
"WHIP": 1.1043956043956045,
"IP": 121.1,
"games_started": null,
"games_pitched": 21,
"role_avg_IP": 5.778,
"recent_avg_IP": 5.733,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0076,
"sample_weight": 1.0,
"run_prevention_factor": 0.9994,
"strikeout_factor": 0.9943,
"walk_factor": 0.906,
"homer_factor": 1.0602,
"regression_flag": "neutral",
"k_percent": 24.7,
"bb_percent": 4.4,
"woba": 0.303,
"xwoba": 0.302,
"barrel_percent": 8.7,
"hard_hit_percent": 45.2,
"whiff_percent": 21.3
},
"espn_rank": {
"rank": 61,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "543037",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 21,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.2,
"ER": 17.0,
"R": 17.0,
"H": 33.0,
"BB": 2.0,
"SO": 23.0,
"HR": 9.0,
"BF": 121.0,
"Pitches": 420.0
},
"per_game": {
"IP": 5.2,
"ER": 3.4,
"R": 3.4,
"H": 6.6,
"BB": 0.4,
"SO": 4.6,
"HR": 1.8,
"BF": 24.2,
"Pitches": 84.0
},
"rates": {
"ERA": 5.3372,
"WHIP": 1.2209,
"ER_per_IP": 0.59302,
"H_per_IP": 1.15116,
"BB_per_IP": 0.06977,
"SO_per_IP": 0.80233,
"HR_per_IP": 0.31395
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 59.1,
"ER": 22.0,
"R": 23.0,
"H": 56.0,
"BB": 10.0,
"SO": 57.0,
"HR": 10.0,
"BF": 242.0,
"Pitches": 880.0
},
"per_game": {
"IP": 6.0,
"ER": 2.2,
"R": 2.3,
"H": 5.6,
"BB": 1.0,
"SO": 5.7,
"HR": 1.0,
"BF": 24.2,
"Pitches": 88.0
},
"rates": {
"ERA": 3.3371,
"WHIP": 1.1124,
"ER_per_IP": 0.37079,
"H_per_IP": 0.94382,
"BB_per_IP": 0.16854,
"SO_per_IP": 0.96067,
"HR_per_IP": 0.16854
}
},
"season": {
"games": 21,
"totals": {
"IP": 121.1,
"ER": 49.0,
"R": 50.0,
"H": 112.0,
"BB": 22.0,
"SO": 123.0,
"HR": 21.0,
"BF": 497.0,
"Pitches": 1846.0
},
"per_game": {
"IP": 5.2,
"ER": 2.3333,
"R": 2.381,
"H": 5.3333,
"BB": 1.0476,
"SO": 5.8571,
"HR": 1.0,
"BF": 23.6667,
"Pitches": 87.9048
},
"rates": {
"ERA": 3.6346,
"WHIP": 1.1044,
"ER_per_IP": 0.40385,
"H_per_IP": 0.92308,
"BB_per_IP": 0.18132,
"SO_per_IP": 1.01374,
"HR_per_IP": 0.17308
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.786,
"predicted_H": 5.892,
"predicted_BB": 1.007,
"predicted_SO": 5.226,
"predicted_HR": 1.257,
"predicted_ERA": 4.3524,
"predicted_WHIP": 1.1976
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4312,
"form_weight": 0.5688,
"form_reliability": 0.8077,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.786,
"final": 2.0158,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 5.892,
"final": 4.2136,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 5.0,
"form": 1.007,
"final": 2.729,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 5.226,
"final": 4.266,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.257,
"final": 1.1462,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.3524,
"final": 4.3524,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1976,
"final": 1.1976,
"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": 22,
"H": 56,
"BB": 10,
"SO": 57,
"HR": 10,
"ERA": 3.3370786516853936,
"WHIP": 1.1123595505617978,
"K9": 8.646067415730338,
"HR9": 1.5168539325842698,
"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-18T00:00:00"
},
"recent_form_boost": 0.8669441305183969,
"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": 5.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 1,
"predicted_H": 2,
"predicted_BB": 5,
"predicted_SO": 5,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "543037",
"player_name": "Gerrit Cole",
"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": 5.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 5.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 5.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": 5.0,
"after": 5.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.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.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": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYY",
"games": 157,
"wins": 90,
"losses": 67,
"win_pct": 0.5732,
"runs_scored": 716.0,
"runs_allowed": 582.0,
"run_differential": 134.0,
"run_differential_per_game": 0.8535,
"avg_runs_scored": 4.5605,
"avg_runs_allowed": 3.707,
"offense_index": 1.0179,
"defense_index": 1.2086,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 4.2,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.167
},
"opponent": {
"team": "TB",
"games": 157,
"wins": 96,
"losses": 61,
"win_pct": 0.6115,
"runs_scored": 713.0,
"runs_allowed": 627.0,
"run_differential": 86.0,
"run_differential_per_game": 0.5478,
"avg_runs_scored": 4.5414,
"avg_runs_allowed": 3.9936,
"offense_index": 1.0137,
"defense_index": 1.1218,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 2.0,
"run_differential": 28.0
},
"available": true,
"quality_score": 0.267
},
"edges": {
"quality_edge": -0.1,
"offense_edge": 0.0179,
"opponent_offense_edge": 0.0137,
"defense_strength": 0.2086,
"opponent_defense_weakness": -0.1218,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 1.0017,
"run_prevention": 0.9863,
"strikeout": 0.9959
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "543037",
"profile": {
"available": true,
"pitcher_id": "543037",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 470.0,
"k_percent": 24.7,
"bb_percent": 4.4,
"woba": 0.303,
"xwoba": 0.302,
"sweet_spot_percent": 36.5,
"barrel_batted_rate": 8.7,
"hard_hit_percent": 45.2,
"avg_best_speed": 81.5573,
"avg_hyper_speed": 94.569,
"whiff_percent": 21.3,
"swing_percent": 49.5
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.1134,
"command_and_miss": 0.225,
"regression_edge": 0.0286,
"xwoba_edge": 0.2714,
"barrel_edge": -0.3333,
"hard_hit_edge": -1.0429,
"whiff_edge": -0.5429,
"bb_edge": 1.175,
"pitch_design_score": 0.1217
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "543037",
"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": 92.03748624523112,
"release_spin_rate": 2372.6649530903105,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 92.03748624523112,
"release_spin_rate": 2372.6649530903105,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.0375,
"release_spin_rate": 2372.665,
"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.1217,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.8695,
"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.0076,
"sample_weight": 1.0,
"run_prevention_factor": 0.9994,
"strikeout_factor": 0.9943,
"walk_factor": 0.906,
"homer_factor": 1.0602,
"woba_minus_xwoba": 0.001,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "543037",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9994,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.9994,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.906,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0602,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9943,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 2,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 5,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 25,
"Pitches": 108,
"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/20260923_TB@NYY.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_TOR@BAL | away | Max Scherzer | CJ Van Eyk | False | 5.0 | 5.0 | 0 | 3 | 4 | 1 | 7/4 | 1/0 | 3/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 6.068807339449541,
"WHIP": 1.3623853211009174,
"IP": 72.2,
"games_started": null,
"games_pitched": 16,
"role_avg_IP": 4.542,
"recent_avg_IP": 5.533,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2219,
"sample_weight": 1.0,
"run_prevention_factor": 1.0189,
"strikeout_factor": 0.9451,
"walk_factor": 1.014,
"homer_factor": 1.0169,
"regression_flag": "neutral",
"k_percent": 17.1,
"bb_percent": 9.8,
"woba": 0.331,
"xwoba": 0.32,
"barrel_percent": 8.8,
"hard_hit_percent": 34.6,
"whiff_percent": 20.3
},
"espn_rank": {
"rank": 775,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7619,
"prior_weight": 0.2381
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "453286",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 16,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.2,
"ER": 12.0,
"R": 12.0,
"H": 20.0,
"BB": 11.0,
"SO": 22.0,
"HR": 2.0,
"BF": 113.0,
"Pitches": 421.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.4,
"H": 4.0,
"BB": 2.2,
"SO": 4.4,
"HR": 0.4,
"BF": 22.6,
"Pitches": 84.2
},
"rates": {
"ERA": 3.9036,
"WHIP": 1.1205,
"ER_per_IP": 0.43373,
"H_per_IP": 0.72289,
"BB_per_IP": 0.39759,
"SO_per_IP": 0.79518,
"HR_per_IP": 0.07229
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.2,
"ER": 24.0,
"R": 24.0,
"H": 41.0,
"BB": 20.0,
"SO": 40.0,
"HR": 5.0,
"BF": 213.0,
"Pitches": 829.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4,
"R": 2.4,
"H": 4.1,
"BB": 2.0,
"SO": 4.0,
"HR": 0.5,
"BF": 21.3,
"Pitches": 82.9
},
"rates": {
"ERA": 4.2632,
"WHIP": 1.2039,
"ER_per_IP": 0.47368,
"H_per_IP": 0.80921,
"BB_per_IP": 0.39474,
"SO_per_IP": 0.78947,
"HR_per_IP": 0.09868
}
},
"season": {
"games": 16,
"totals": {
"IP": 72.2,
"ER": 49.0,
"R": 49.0,
"H": 68.0,
"BB": 31.0,
"SO": 54.0,
"HR": 14.0,
"BF": 315.0,
"Pitches": 1254.0
},
"per_game": {
"IP": 4.2,
"ER": 3.0625,
"R": 3.0625,
"H": 4.25,
"BB": 1.9375,
"SO": 3.375,
"HR": 0.875,
"BF": 19.6875,
"Pitches": 78.375
},
"rates": {
"ERA": 6.0688,
"WHIP": 1.3624,
"ER_per_IP": 0.67431,
"H_per_IP": 0.93578,
"BB_per_IP": 0.42661,
"SO_per_IP": 0.74312,
"HR_per_IP": 0.19266
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.584,
"predicted_H": 4.347,
"predicted_BB": 2.052,
"predicted_SO": 4.243,
"predicted_HR": 0.599,
"predicted_ERA": 4.4921,
"predicted_WHIP": 1.2359
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4506,
"form_weight": 0.5494,
"form_reliability": 0.7619,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7619,
"prior_weight": 0.2381
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.1,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.584,
"final": 2.7714,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 4.347,
"final": 5.5424,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.052,
"final": 1.578,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 4.243,
"final": 3.6829,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.599,
"final": 0.7797,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4921,
"final": 4.4921,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2359,
"final": 1.2359,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 50.2,
"ER": 24,
"H": 41,
"BB": 20,
"SO": 40,
"HR": 5,
"ERA": 4.2631578947368425,
"WHIP": 1.2039473684210527,
"K9": 7.105263157894737,
"HR9": 0.8881578947368421,
"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-16T00:00:00"
},
"recent_form_boost": 0.9734177408081662,
"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": 7.0,
"predicted_BB": 1.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7619,
"prior_weight": 0.2381
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "453286",
"player_name": "Max Scherzer",
"position": "Starter",
"team": "TOR",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TOR",
"games": 157,
"wins": 77,
"losses": 80,
"win_pct": 0.4904,
"runs_scored": 632.0,
"runs_allowed": 675.0,
"run_differential": -43.0,
"run_differential_per_game": -0.2739,
"avg_runs_scored": 4.0255,
"avg_runs_allowed": 4.2994,
"offense_index": 0.8949,
"defense_index": 1.0463,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 4.7,
"run_differential": -4.0
},
"available": true,
"quality_score": -0.0766
},
"opponent": {
"team": "BAL",
"games": 157,
"wins": 76,
"losses": 81,
"win_pct": 0.4841,
"runs_scored": 697.0,
"runs_allowed": 727.0,
"run_differential": -30.0,
"run_differential_per_game": -0.1911,
"avg_runs_scored": 4.4395,
"avg_runs_allowed": 4.6306,
"offense_index": 0.9869,
"defense_index": 0.9715,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 3.9,
"run_differential": -3.0
},
"available": true,
"quality_score": -0.0369
},
"edges": {
"quality_edge": -0.0397,
"offense_edge": -0.1051,
"opponent_offense_edge": -0.0131,
"defense_strength": 0.0463,
"opponent_defense_weakness": 0.0285,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0003,
"run_prevention": 0.9953,
"strikeout": 0.9999
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "453286",
"profile": {
"available": true,
"pitcher_id": "453286",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 294.0,
"k_percent": 17.1,
"bb_percent": 9.8,
"woba": 0.331,
"xwoba": 0.32,
"sweet_spot_percent": 33.8,
"barrel_batted_rate": 8.8,
"hard_hit_percent": 34.6,
"avg_best_speed": 76.4694,
"avg_hyper_speed": 93.3859,
"whiff_percent": 20.3,
"swing_percent": 49.5
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.1622,
"command_and_miss": -0.5836,
"regression_edge": 0.3143,
"xwoba_edge": -0.2429,
"barrel_edge": -0.3556,
"hard_hit_edge": 0.4714,
"whiff_edge": -0.6857,
"bb_edge": -0.175,
"pitch_design_score": -0.1349
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "453286",
"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": 87.45516823346536,
"release_spin_rate": 2266.2043740371455,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 87.45516823346536,
"release_spin_rate": 2266.2043740371455,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.4552,
"release_spin_rate": 2266.2044,
"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.1349,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.9634,
"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.2219,
"sample_weight": 1.0,
"run_prevention_factor": 1.0189,
"strikeout_factor": 0.9451,
"walk_factor": 1.014,
"homer_factor": 1.0169,
"woba_minus_xwoba": 0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "453286",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0189,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 1.0189,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.014,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0169,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9451,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 7,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 88,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "WRONG_STARTER",
"severity": "critical",
"title": "Wrong starter identity",
"detail": "The projected MLB player ID differs from the official starter ID; performance errors are not attributable to the projected player."
},
{
"code": "FALSE_CONFIRMATION",
"severity": "critical",
"title": "Confirmed flag was false assurance",
"detail": "The server marked this starter confirmed even though a different player started."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
}
],
"provenance": {
"prediction": "output/games/20260923_TOR@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"
}
} |
| 20260923 | 20260923_TOR@BAL | home | Chris Bassitt | Trey Gibson | False | 5.0 | 6.2 | 5 | 3 | 0 | -3 | 6/3 | 0/2 | 8/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.639175257731959,
"WHIP": 1.5463917525773196,
"IP": 97.0,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 5.098,
"recent_avg_IP": 5.933,
"last_start_IP": 6.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3069,
"sample_weight": 1.0,
"run_prevention_factor": 1.0261,
"strikeout_factor": 0.9486,
"walk_factor": 0.986,
"homer_factor": 0.9805,
"regression_flag": "neutral",
"k_percent": 16.4,
"bb_percent": 8.4,
"woba": 0.346,
"xwoba": 0.339,
"barrel_percent": 5.0,
"hard_hit_percent": 37.2,
"whiff_percent": 21.6
},
"espn_rank": {
"rank": 233,
"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": "605135",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.2,
"ER": 12.0,
"R": 12.0,
"H": 30.0,
"BB": 11.0,
"SO": 26.0,
"HR": 3.0,
"BF": 129.0,
"Pitches": 479.0
},
"per_game": {
"IP": 6.0,
"ER": 2.4,
"R": 2.4,
"H": 6.0,
"BB": 2.2,
"SO": 5.2,
"HR": 0.6,
"BF": 25.8,
"Pitches": 95.8
},
"rates": {
"ERA": 3.6404,
"WHIP": 1.382,
"ER_per_IP": 0.40449,
"H_per_IP": 1.01124,
"BB_per_IP": 0.37079,
"SO_per_IP": 0.8764,
"HR_per_IP": 0.10112
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.0,
"ER": 24.0,
"R": 24.0,
"H": 59.0,
"BB": 18.0,
"SO": 42.0,
"HR": 6.0,
"BF": 236.0,
"Pitches": 856.0
},
"per_game": {
"IP": 5.1,
"ER": 2.4,
"R": 2.4,
"H": 5.9,
"BB": 1.8,
"SO": 4.2,
"HR": 0.6,
"BF": 23.6,
"Pitches": 85.6
},
"rates": {
"ERA": 4.0,
"WHIP": 1.4259,
"ER_per_IP": 0.44444,
"H_per_IP": 1.09259,
"BB_per_IP": 0.33333,
"SO_per_IP": 0.77778,
"HR_per_IP": 0.11111
}
},
"season": {
"games": 19,
"totals": {
"IP": 97.0,
"ER": 50.0,
"R": 51.0,
"H": 113.0,
"BB": 37.0,
"SO": 72.0,
"HR": 10.0,
"BF": 438.0,
"Pitches": 1641.0
},
"per_game": {
"IP": 5.0,
"ER": 2.6316,
"R": 2.6842,
"H": 5.9474,
"BB": 1.9474,
"SO": 3.7895,
"HR": 0.5263,
"BF": 23.0526,
"Pitches": 86.3684
},
"rates": {
"ERA": 4.6392,
"WHIP": 1.5464,
"ER_per_IP": 0.51546,
"H_per_IP": 1.16495,
"BB_per_IP": 0.38144,
"SO_per_IP": 0.74227,
"HR_per_IP": 0.10309
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.543,
"predicted_H": 5.876,
"predicted_BB": 2.03,
"predicted_SO": 4.696,
"predicted_HR": 0.637,
"predicted_ERA": 4.0953,
"predicted_WHIP": 1.415
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.438,
"form_weight": 0.562,
"form_reliability": 0.7917,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.543,
"final": 2.3052,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.876,
"final": 5.4923,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 2.03,
"final": 1.1408,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 4.696,
"final": 6.1432,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.637,
"final": 0.358,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.0953,
"final": 4.0953,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.415,
"final": 1.415,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 54.0,
"ER": 24,
"H": 59,
"BB": 18,
"SO": 42,
"HR": 6,
"ERA": 4.0,
"WHIP": 1.4259259259259258,
"K9": 7.0,
"HR9": 1.0,
"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-16T00:00:00"
},
"recent_form_boost": 0.9493619415878932,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_BB": 0.0,
"predicted_SO": 8.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 5,
"predicted_BB": 0,
"predicted_SO": 8,
"predicted_HR": 0
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3,
"predicted_H": 6,
"predicted_BB": 0,
"predicted_SO": 8,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "605135",
"player_name": "Chris Bassitt",
"position": "Starter",
"team": "BAL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1176,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 2,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 2,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 4,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 3,
"boosted_metrics": 2,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 3,
"biggest_boost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.0,
"delta": -0.6667,
"percent_delta": -0.1177,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BAL",
"games": 157,
"wins": 76,
"losses": 81,
"win_pct": 0.4841,
"runs_scored": 697.0,
"runs_allowed": 727.0,
"run_differential": -30.0,
"run_differential_per_game": -0.1911,
"avg_runs_scored": 4.4395,
"avg_runs_allowed": 4.6306,
"offense_index": 0.9869,
"defense_index": 0.9715,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 3.9,
"run_differential": -3.0
},
"available": true,
"quality_score": -0.0369
},
"opponent": {
"team": "TOR",
"games": 157,
"wins": 77,
"losses": 80,
"win_pct": 0.4904,
"runs_scored": 632.0,
"runs_allowed": 675.0,
"run_differential": -43.0,
"run_differential_per_game": -0.2739,
"avg_runs_scored": 4.0255,
"avg_runs_allowed": 4.2994,
"offense_index": 0.8949,
"defense_index": 1.0463,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.3,
"avg_runs_allowed": 4.7,
"run_differential": -4.0
},
"available": true,
"quality_score": -0.0766
},
"edges": {
"quality_edge": 0.0397,
"offense_edge": -0.0131,
"opponent_offense_edge": -0.1051,
"defense_strength": -0.0285,
"opponent_defense_weakness": -0.0463,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0049,
"run_prevention": 0.984,
"strikeout": 1.0096
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "605135",
"profile": {
"available": true,
"pitcher_id": "605135",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 412.0,
"k_percent": 16.4,
"bb_percent": 8.4,
"woba": 0.346,
"xwoba": 0.339,
"sweet_spot_percent": 30.9,
"barrel_batted_rate": 5.0,
"hard_hit_percent": 37.2,
"avg_best_speed": 76.9092,
"avg_hyper_speed": 93.7593,
"whiff_percent": 21.6,
"swing_percent": 46.1
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.3186,
"command_and_miss": -0.4936,
"regression_edge": 0.2,
"xwoba_edge": -0.7857,
"barrel_edge": 0.4889,
"hard_hit_edge": 0.1,
"whiff_edge": -0.5,
"bb_edge": 0.175,
"pitch_design_score": -0.2515
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "605135",
"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": 85.3723472409564,
"release_spin_rate": 2180.5493208905896,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 85.3723472409564,
"release_spin_rate": 2180.5493208905896,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.3723,
"release_spin_rate": 2180.5493,
"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.2515,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.7965,
"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.3069,
"sample_weight": 1.0,
"run_prevention_factor": 1.0261,
"strikeout_factor": 0.9486,
"walk_factor": 0.986,
"homer_factor": 0.9805,
"woba_minus_xwoba": 0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "605135",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0261,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0261,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.986,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9805,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9486,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 21,
"Pitches": 92,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "WRONG_STARTER",
"severity": "critical",
"title": "Wrong starter identity",
"detail": "The projected MLB player ID differs from the official starter ID; performance errors are not attributable to the projected player."
},
{
"code": "FALSE_CONFIRMATION",
"severity": "critical",
"title": "Confirmed flag was false assurance",
"detail": "The server marked this starter confirmed even though a different player started."
},
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
},
{
"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/20260923_TOR@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"
}
} |
| 20260923 | 20260923_WAS@DET | away | Richard Lovelady | Richard Lovelady | True | 3.2 | 1.1 | -7 | 2 | 0 | -2 | 3/1 | 0/1 | 8/0 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.857142857142857,
"WHIP": 1.836734693877551,
"IP": 32.2,
"games_started": null,
"games_pitched": 36,
"role_avg_IP": 1.467,
"recent_avg_IP": 1.467,
"last_start_IP": 1.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.213,
"sample_weight": 0.564,
"run_prevention_factor": 1.0181,
"strikeout_factor": 0.9832,
"walk_factor": 1.0462,
"homer_factor": 0.9785,
"regression_flag": "neutral",
"k_percent": 18.9,
"bb_percent": 13.2,
"woba": 0.373,
"xwoba": 0.352,
"barrel_percent": 5.8,
"hard_hit_percent": 29.5,
"whiff_percent": 22.9
},
"espn_rank": {
"rank": 424,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.655,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.571,
"prior_weight": 0.429
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663992",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 36,
"reference_playing_time": 4.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 3.0,
"ER": 2.0,
"R": 4.0,
"H": 6.0,
"BB": 0.0,
"SO": 3.0,
"HR": 1.0,
"BF": 16.0,
"Pitches": 65.0
},
"per_game": {
"IP": 0.2,
"ER": 0.4,
"R": 0.8,
"H": 1.2,
"BB": 0.0,
"SO": 0.6,
"HR": 0.2,
"BF": 3.2,
"Pitches": 13.0
},
"rates": {
"ERA": 6.0,
"WHIP": 2.0,
"ER_per_IP": 0.66667,
"H_per_IP": 2.0,
"BB_per_IP": 0.0,
"SO_per_IP": 1.0,
"HR_per_IP": 0.33333
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 5.2,
"ER": 5.0,
"R": 7.0,
"H": 11.0,
"BB": 2.0,
"SO": 6.0,
"HR": 1.0,
"BF": 32.0,
"Pitches": 125.0
},
"per_game": {
"IP": 0.2,
"ER": 0.5,
"R": 0.7,
"H": 1.1,
"BB": 0.2,
"SO": 0.6,
"HR": 0.1,
"BF": 3.2,
"Pitches": 12.5
},
"rates": {
"ERA": 7.9412,
"WHIP": 2.2941,
"ER_per_IP": 0.88235,
"H_per_IP": 1.94118,
"BB_per_IP": 0.35294,
"SO_per_IP": 1.05882,
"HR_per_IP": 0.17647
}
},
"season": {
"games": 36,
"totals": {
"IP": 32.2,
"ER": 14.0,
"R": 18.0,
"H": 39.0,
"BB": 21.0,
"SO": 30.0,
"HR": 4.0,
"BF": 159.0,
"Pitches": 592.0
},
"per_game": {
"IP": 1.0,
"ER": 0.3889,
"R": 0.5,
"H": 1.0833,
"BB": 0.5833,
"SO": 0.8333,
"HR": 0.1111,
"BF": 4.4167,
"Pitches": 16.4444
},
"rates": {
"ERA": 3.8571,
"WHIP": 1.8367,
"ER_per_IP": 0.42857,
"H_per_IP": 1.19388,
"BB_per_IP": 0.64286,
"SO_per_IP": 0.91837,
"HR_per_IP": 0.12245
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 2.1,
"predicted_ER": 1.401,
"predicted_H": 3.323,
"predicted_BB": 0.696,
"predicted_SO": 2.222,
"predicted_HR": 0.452,
"predicted_ERA": 5.537,
"predicted_WHIP": 1.7642
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5313,
"form_weight": 0.4687,
"form_reliability": 0.571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.655,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.571,
"prior_weight": 0.429
},
"applied_metrics": {
"predicted_IP": {
"model": 4.1,
"form": 2.1,
"final": 3.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.401,
"final": 1.7192,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 3.323,
"final": 3.1514,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 0.696,
"final": 0.3262,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 2.222,
"final": 5.2916,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.452,
"final": 0.7431,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.537,
"final": 5.537,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.7642,
"final": 1.7642,
"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": 5.2,
"ER": 5,
"H": 11,
"BB": 2,
"SO": 6,
"HR": 1,
"ERA": 7.941176470588236,
"WHIP": 2.294117647058824,
"K9": 9.529411764705884,
"HR9": 1.5882352941176472,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 1.0777605704898245,
"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": 8.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.655,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.571,
"prior_weight": 0.429
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 3.2,
"predicted_ER": 2,
"predicted_H": 3,
"predicted_BB": 0,
"predicted_SO": 8,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663992",
"player_name": "Richard Lovelady",
"position": "Starter",
"team": "WAS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 4.3333,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 3.2,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 3.2,
"delta": -1.1333,
"percent_delta": -0.2615,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 3.2,
"delta": -1.1333,
"percent_delta": -0.2615,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 3.2,
"predicted_R": 2.0,
"predicted_SO": 8.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 3.2,
"after": 3.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 3.2,
"delta": -1.1333,
"percent_delta": -0.2615,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 3.2,
"delta": -1.1333,
"percent_delta": -0.2615,
"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": 158,
"wins": 74,
"losses": 84,
"win_pct": 0.4684,
"runs_scored": 803.0,
"runs_allowed": 796.0,
"run_differential": 7.0,
"run_differential_per_game": 0.0443,
"avg_runs_scored": 5.0823,
"avg_runs_allowed": 5.038,
"offense_index": 1.1298,
"defense_index": 0.8929,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.0,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.0486
},
"opponent": {
"team": "DET",
"games": 158,
"wins": 74,
"losses": 84,
"win_pct": 0.4684,
"runs_scored": 707.0,
"runs_allowed": 634.0,
"run_differential": 73.0,
"run_differential_per_game": 0.462,
"avg_runs_scored": 4.4747,
"avg_runs_allowed": 4.0127,
"offense_index": 0.9947,
"defense_index": 1.121,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 3.9,
"run_differential": 10.0
},
"available": true,
"quality_score": 0.0296
},
"edges": {
"quality_edge": 0.019,
"offense_edge": 0.1298,
"opponent_offense_edge": -0.0053,
"defense_strength": -0.1071,
"opponent_defense_weakness": -0.121,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 0.9978,
"run_prevention": 1.0089,
"strikeout": 1.001
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663992",
"profile": {
"available": true,
"pitcher_id": "663992",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 141.0,
"k_percent": 18.9,
"bb_percent": 13.2,
"woba": 0.373,
"xwoba": 0.352,
"sweet_spot_percent": 35.2,
"barrel_batted_rate": 5.8,
"hard_hit_percent": 29.5,
"avg_best_speed": 75.0815,
"avg_hyper_speed": 93.2021,
"whiff_percent": 22.9,
"swing_percent": 45.8
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.5227,
"command_and_miss": -0.5079,
"regression_edge": 0.6,
"xwoba_edge": -1.1571,
"barrel_edge": 0.3111,
"hard_hit_edge": 1.2,
"whiff_edge": -0.3143,
"bb_edge": -1.025,
"pitch_design_score": -0.16
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663992",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 10,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 10,
"pitch_usage": 0.0,
"release_speed": 87.007013701801,
"release_spin_rate": 2396.295259915072,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 10,
"pitch_usage": 0.0,
"release_speed": 87.007013701801,
"release_spin_rate": 2396.295259915072,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.007,
"release_spin_rate": 2396.2953,
"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.16,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.1427,
"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.213,
"sample_weight": 0.564,
"run_prevention_factor": 1.0181,
"strikeout_factor": 0.9832,
"walk_factor": 1.0462,
"homer_factor": 0.9785,
"woba_minus_xwoba": 0.021,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "663992",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 1.0102,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 1.0102,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0261,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9879,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9905,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 3.2,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 8,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 14,
"Pitches": 67,
"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 -7 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260923_WAS@DET.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260923 | 20260923_WAS@DET | home | Framber Valdez | Framber Valdez | True | 6.0 | 5.1 | -2 | 2 | 2 | 0 | 2/4 | 4/3 | 7/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.055335968379447,
"WHIP": 1.3636363636363638,
"IP": 168.2,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.622,
"recent_avg_IP": 6.0,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2059,
"sample_weight": 1.0,
"run_prevention_factor": 1.0175,
"strikeout_factor": 0.9474,
"walk_factor": 0.992,
"homer_factor": 1.0046,
"regression_flag": "neutral",
"k_percent": 17.5,
"bb_percent": 8.7,
"woba": 0.317,
"xwoba": 0.322,
"barrel_percent": 5.7,
"hard_hit_percent": 41.8,
"whiff_percent": 20.3
},
"espn_rank": {
"rank": 136,
"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": "664285",
"report_date": "20260923",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 9.0,
"R": 11.0,
"H": 26.0,
"BB": 10.0,
"SO": 18.0,
"HR": 3.0,
"BF": 123.0,
"Pitches": 463.0
},
"per_game": {
"IP": 6.0,
"ER": 1.8,
"R": 2.2,
"H": 5.2,
"BB": 2.0,
"SO": 3.6,
"HR": 0.6,
"BF": 24.6,
"Pitches": 92.6
},
"rates": {
"ERA": 2.7,
"WHIP": 1.2,
"ER_per_IP": 0.3,
"H_per_IP": 0.86667,
"BB_per_IP": 0.33333,
"SO_per_IP": 0.6,
"HR_per_IP": 0.1
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.1,
"ER": 21.0,
"R": 25.0,
"H": 55.0,
"BB": 26.0,
"SO": 41.0,
"HR": 5.0,
"BF": 257.0,
"Pitches": 944.0
},
"per_game": {
"IP": 6.0,
"ER": 2.1,
"R": 2.5,
"H": 5.5,
"BB": 2.6,
"SO": 4.1,
"HR": 0.5,
"BF": 25.7,
"Pitches": 94.4
},
"rates": {
"ERA": 3.1326,
"WHIP": 1.3425,
"ER_per_IP": 0.34807,
"H_per_IP": 0.9116,
"BB_per_IP": 0.43094,
"SO_per_IP": 0.67956,
"HR_per_IP": 0.08287
}
},
"season": {
"games": 30,
"totals": {
"IP": 168.2,
"ER": 76.0,
"R": 85.0,
"H": 166.0,
"BB": 64.0,
"SO": 129.0,
"HR": 16.0,
"BF": 736.0,
"Pitches": 2681.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5333,
"R": 2.8333,
"H": 5.5333,
"BB": 2.1333,
"SO": 4.3,
"HR": 0.5333,
"BF": 24.5333,
"Pitches": 89.3667
},
"rates": {
"ERA": 4.0553,
"WHIP": 1.3636,
"ER_per_IP": 0.45059,
"H_per_IP": 0.98419,
"BB_per_IP": 0.37945,
"SO_per_IP": 0.76482,
"HR_per_IP": 0.09486
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.2,
"predicted_H": 5.447,
"predicted_BB": 2.239,
"predicted_SO": 4.162,
"predicted_HR": 0.599,
"predicted_ERA": 3.3317,
"predicted_WHIP": 1.2932
}
},
"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": 2.2,
"final": 2.1179,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 5.447,
"final": 4.0324,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 2.239,
"final": 2.9617,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 4.162,
"final": 5.3266,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.599,
"final": 0.3532,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.3317,
"final": 3.3317,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2932,
"final": 1.2932,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 60.1,
"ER": 21,
"H": 55,
"BB": 26,
"SO": 41,
"HR": 5,
"ERA": 3.1325966850828726,
"WHIP": 1.3425414364640884,
"K9": 6.116022099447513,
"HR9": 0.7458563535911602,
"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-17T00:00:00"
},
"recent_form_boost": 0.8496944564231705,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 4.0,
"predicted_SO": 7.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": "664285",
"player_name": "Framber Valdez",
"position": "Starter",
"team": "DET",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 2.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "DET",
"games": 158,
"wins": 74,
"losses": 84,
"win_pct": 0.4684,
"runs_scored": 707.0,
"runs_allowed": 634.0,
"run_differential": 73.0,
"run_differential_per_game": 0.462,
"avg_runs_scored": 4.4747,
"avg_runs_allowed": 4.0127,
"offense_index": 0.9947,
"defense_index": 1.121,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 3.9,
"run_differential": 10.0
},
"available": true,
"quality_score": 0.0296
},
"opponent": {
"team": "WAS",
"games": 158,
"wins": 74,
"losses": 84,
"win_pct": 0.4684,
"runs_scored": 803.0,
"runs_allowed": 796.0,
"run_differential": 7.0,
"run_differential_per_game": 0.0443,
"avg_runs_scored": 5.0823,
"avg_runs_allowed": 5.038,
"offense_index": 1.1298,
"defense_index": 0.8929,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.0,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.0486
},
"edges": {
"quality_edge": -0.019,
"offense_edge": -0.0053,
"opponent_offense_edge": 0.1298,
"defense_strength": 0.121,
"opponent_defense_weakness": 0.1071,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9977,
"run_prevention": 1.0096,
"strikeout": 0.989
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "664285",
"profile": {
"available": true,
"pitcher_id": "664285",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 709.0,
"k_percent": 17.5,
"bb_percent": 8.7,
"woba": 0.317,
"xwoba": 0.322,
"sweet_spot_percent": 28.2,
"barrel_batted_rate": 5.7,
"hard_hit_percent": 41.8,
"avg_best_speed": 79.314,
"avg_hyper_speed": 94.6485,
"whiff_percent": 20.3,
"swing_percent": 46.9
},
"league_medians": {
"pa": 134.0,
"k_percent": 21.9,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.3115,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.5964,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0953,
"command_and_miss": -0.5029,
"regression_edge": -0.1429,
"xwoba_edge": -0.3,
"barrel_edge": 0.3333,
"hard_hit_edge": -0.5571,
"whiff_edge": -0.6857,
"bb_edge": 0.1,
"pitch_design_score": -0.0943
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "664285",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 92,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 88.18041594178791,
"release_spin_rate": 2286.863141165475,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 92,
"pitch_usage": 0.0,
"release_speed": 88.18041594178791,
"release_spin_rate": 2286.863141165475,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.1804,
"release_spin_rate": 2286.8631,
"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.0943,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.6733,
"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.2059,
"sample_weight": 1.0,
"run_prevention_factor": 1.0175,
"strikeout_factor": 0.9474,
"walk_factor": 0.992,
"homer_factor": 1.0046,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "664285",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0175,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0175,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.992,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0046,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9474,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 4,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"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": "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/20260923_WAS@DET.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |