| 20260922 | 20260922_ARI@COL | away | Michael Soroka | Michael Soroka | True | 5.0 | 7.0 | 6 | 2 | 1 | -1 | 2/2 | 2/1 | 4/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.450479233226837,
"WHIP": 1.1309904153354633,
"IP": 104.1,
"games_started": null,
"games_pitched": 20,
"role_avg_IP": 5.281,
"recent_avg_IP": 3.867,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0045,
"sample_weight": 1.0,
"run_prevention_factor": 1.0004,
"strikeout_factor": 0.9946,
"walk_factor": 0.939,
"homer_factor": 0.9935,
"regression_flag": "neutral",
"k_percent": 23.5,
"bb_percent": 6.1,
"woba": 0.287,
"xwoba": 0.315,
"barrel_percent": 8.1,
"hard_hit_percent": 33.4,
"whiff_percent": 22.5
},
"espn_rank": {
"rank": 83,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "647336",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 20,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.1,
"ER": 12.0,
"R": 12.0,
"H": 20.0,
"BB": 9.0,
"SO": 22.0,
"HR": 2.0,
"BF": 96.0,
"Pitches": 379.0
},
"per_game": {
"IP": 4.1,
"ER": 2.4,
"R": 2.4,
"H": 4.0,
"BB": 1.8,
"SO": 4.4,
"HR": 0.4,
"BF": 19.2,
"Pitches": 75.8
},
"rates": {
"ERA": 4.8358,
"WHIP": 1.2985,
"ER_per_IP": 0.53731,
"H_per_IP": 0.89552,
"BB_per_IP": 0.40299,
"SO_per_IP": 0.98507,
"HR_per_IP": 0.08955
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 49.1,
"ER": 20.0,
"R": 20.0,
"H": 37.0,
"BB": 12.0,
"SO": 44.0,
"HR": 4.0,
"BF": 196.0,
"Pitches": 764.0
},
"per_game": {
"IP": 5.0,
"ER": 2.0,
"R": 2.0,
"H": 3.7,
"BB": 1.2,
"SO": 4.4,
"HR": 0.4,
"BF": 19.6,
"Pitches": 76.4
},
"rates": {
"ERA": 3.6486,
"WHIP": 0.9932,
"ER_per_IP": 0.40541,
"H_per_IP": 0.75,
"BB_per_IP": 0.24324,
"SO_per_IP": 0.89189,
"HR_per_IP": 0.08108
}
},
"season": {
"games": 20,
"totals": {
"IP": 104.1,
"ER": 40.0,
"R": 40.0,
"H": 92.0,
"BB": 26.0,
"SO": 101.0,
"HR": 8.0,
"BF": 429.0,
"Pitches": 1669.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0,
"R": 2.0,
"H": 4.6,
"BB": 1.3,
"SO": 5.05,
"HR": 0.4,
"BF": 21.45,
"Pitches": 83.45
},
"rates": {
"ERA": 3.4505,
"WHIP": 1.131,
"ER_per_IP": 0.38339,
"H_per_IP": 0.88179,
"BB_per_IP": 0.2492,
"SO_per_IP": 0.96805,
"HR_per_IP": 0.07668
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.264,
"predicted_H": 4.186,
"predicted_BB": 1.58,
"predicted_SO": 4.557,
"predicted_HR": 0.467,
"predicted_ERA": 4.2324,
"predicted_WHIP": 1.1978
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4345,
"form_weight": 0.5655,
"form_reliability": 0.8,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.264,
"final": 2.1493,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.186,
"final": 3.2362,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.58,
"final": 1.7625,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.557,
"final": 4.315,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.467,
"final": 0.2641,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.2324,
"final": 4.2324,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1978,
"final": 1.1978,
"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": 20,
"H": 37,
"BB": 12,
"SO": 44,
"HR": 4,
"ERA": 3.648648648648649,
"WHIP": 0.9932432432432433,
"K9": 8.027027027027028,
"HR9": 0.7297297297297298,
"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-15T00:00:00"
},
"recent_form_boost": 0.8987118163145282,
"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": 2.0,
"predicted_BB": 2.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8,
"prior_weight": 0.2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "647336",
"player_name": "Michael Soroka",
"position": "Starter",
"team": "ARI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.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": "ARI",
"games": 156,
"wins": 82,
"losses": 74,
"win_pct": 0.5256,
"runs_scored": 693.0,
"runs_allowed": 694.0,
"run_differential": -1.0,
"run_differential_per_game": -0.0064,
"avg_runs_scored": 4.4423,
"avg_runs_allowed": 4.4487,
"offense_index": 0.9921,
"defense_index": 1.0065,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 5.0,
"run_differential": -3.0
},
"available": true,
"quality_score": -0.014
},
"opponent": {
"team": "COL",
"games": 156,
"wins": 57,
"losses": 99,
"win_pct": 0.3654,
"runs_scored": 727.0,
"runs_allowed": 904.0,
"run_differential": -177.0,
"run_differential_per_game": -1.1346,
"avg_runs_scored": 4.6603,
"avg_runs_allowed": 5.7949,
"offense_index": 1.0407,
"defense_index": 0.7727,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 6.4,
"run_differential": -23.0
},
"available": true,
"quality_score": -0.3588
},
"edges": {
"quality_edge": 0.3448,
"offense_edge": -0.0079,
"opponent_offense_edge": 0.0407,
"defense_strength": 0.0065,
"opponent_defense_weakness": 0.2273,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0124,
"run_prevention": 0.9886,
"strikeout": 1.0071
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "647336",
"profile": {
"available": true,
"pitcher_id": "647336",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 406.0,
"k_percent": 23.5,
"bb_percent": 6.1,
"woba": 0.287,
"xwoba": 0.315,
"sweet_spot_percent": 37.5,
"barrel_batted_rate": 8.1,
"hard_hit_percent": 33.4,
"avg_best_speed": 76.3304,
"avg_hyper_speed": 93.3674,
"whiff_percent": 22.5,
"swing_percent": 49.6
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.092,
"command_and_miss": 0.1279,
"regression_edge": -0.8,
"xwoba_edge": -0.1071,
"barrel_edge": -0.2,
"hard_hit_edge": 0.6429,
"whiff_edge": -0.3643,
"bb_edge": 0.7625,
"pitch_design_score": -0.1155
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "647336",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 61,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 61,
"pitch_usage": 0.0,
"release_speed": 87.79524232123826,
"release_spin_rate": 2598.719346360736,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 61,
"pitch_usage": 0.0,
"release_speed": 87.79524232123826,
"release_spin_rate": 2598.719346360736,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.7952,
"release_spin_rate": 2598.7193,
"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.1155,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.8249,
"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.0045,
"sample_weight": 1.0,
"run_prevention_factor": 1.0004,
"strikeout_factor": 0.9946,
"walk_factor": 0.939,
"homer_factor": 0.9935,
"woba_minus_xwoba": -0.028,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "647336",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0004,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0004,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.939,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9935,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9946,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 20,
"Pitches": 89,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +6 outs from the projected workload."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_ARI@COL | home | Kyle Freeland | Kyle Freeland | True | 4.2 | 3.0 | -5 | 5 | 5 | 0 | 6/9 | 2/1 | 2/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 6.381818181818181,
"WHIP": 1.4727272727272727,
"IP": 128.1,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 5.347,
"recent_avg_IP": 5.8,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.5113,
"sample_weight": 1.0,
"run_prevention_factor": 1.0435,
"strikeout_factor": 0.9626,
"walk_factor": 0.915,
"homer_factor": 1.1234,
"regression_flag": "neutral",
"k_percent": 18.1,
"bb_percent": 4.9,
"woba": 0.377,
"xwoba": 0.35,
"barrel_percent": 10.6,
"hard_hit_percent": 43.1,
"whiff_percent": 22.3
},
"espn_rank": {
"rank": 561,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "607536",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.0,
"ER": 10.0,
"R": 12.0,
"H": 28.0,
"BB": 7.0,
"SO": 19.0,
"HR": 6.0,
"BF": 122.0,
"Pitches": 427.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0,
"R": 2.4,
"H": 5.6,
"BB": 1.4,
"SO": 3.8,
"HR": 1.2,
"BF": 24.4,
"Pitches": 85.4
},
"rates": {
"ERA": 3.1034,
"WHIP": 1.2069,
"ER_per_IP": 0.34483,
"H_per_IP": 0.96552,
"BB_per_IP": 0.24138,
"SO_per_IP": 0.65517,
"HR_per_IP": 0.2069
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 56.1,
"ER": 31.0,
"R": 33.0,
"H": 62.0,
"BB": 11.0,
"SO": 43.0,
"HR": 11.0,
"BF": 240.0,
"Pitches": 854.0
},
"per_game": {
"IP": 5.2,
"ER": 3.1,
"R": 3.3,
"H": 6.2,
"BB": 1.1,
"SO": 4.3,
"HR": 1.1,
"BF": 24.0,
"Pitches": 85.4
},
"rates": {
"ERA": 4.9527,
"WHIP": 1.2959,
"ER_per_IP": 0.5503,
"H_per_IP": 1.10059,
"BB_per_IP": 0.19527,
"SO_per_IP": 0.76331,
"HR_per_IP": 0.19527
}
},
"season": {
"games": 24,
"totals": {
"IP": 128.1,
"ER": 91.0,
"R": 95.0,
"H": 161.0,
"BB": 28.0,
"SO": 104.0,
"HR": 27.0,
"BF": 574.0,
"Pitches": 2056.0
},
"per_game": {
"IP": 5.1,
"ER": 3.7917,
"R": 3.9583,
"H": 6.7083,
"BB": 1.1667,
"SO": 4.3333,
"HR": 1.125,
"BF": 23.9167,
"Pitches": 85.6667
},
"rates": {
"ERA": 6.3818,
"WHIP": 1.4727,
"ER_per_IP": 0.70909,
"H_per_IP": 1.25455,
"BB_per_IP": 0.21818,
"SO_per_IP": 0.81039,
"HR_per_IP": 0.21039
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.767,
"predicted_H": 5.921,
"predicted_BB": 1.388,
"predicted_SO": 4.27,
"predicted_HR": 1.089,
"predicted_ERA": 4.4379,
"predicted_WHIP": 1.3024
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4228,
"form_weight": 0.5772,
"form_reliability": 0.8276,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 2.767,
"final": 3.7112,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.921,
"final": 5.9544,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.388,
"final": 1.6468,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.27,
"final": 3.3102,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 1.089,
"final": 1.4742,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4379,
"final": 4.4379,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3024,
"final": 1.3024,
"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": 31,
"H": 62,
"BB": 11,
"SO": 43,
"HR": 11,
"ERA": 4.952662721893492,
"WHIP": 1.2958579881656807,
"K9": 6.869822485207101,
"HR9": 1.757396449704142,
"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-15T00:00:00"
},
"recent_form_boost": 1.052978768177634,
"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": 6.0,
"predicted_BB": 2.0,
"predicted_SO": 2.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.2,
"predicted_ER": 5,
"predicted_H": 6,
"predicted_BB": 2,
"predicted_SO": 2,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "607536",
"player_name": "Kyle Freeland",
"position": "Starter",
"team": "COL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.6667,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 4.2,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 4.2,
"delta": -1.4667,
"percent_delta": -0.2588,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 4.2,
"delta": -1.4667,
"percent_delta": -0.2588,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 4.2,
"predicted_R": 5.0,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 4.2,
"delta": -1.4667,
"percent_delta": -0.2588,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 4.2,
"delta": -1.4667,
"percent_delta": -0.2588,
"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": 156,
"wins": 57,
"losses": 99,
"win_pct": 0.3654,
"runs_scored": 727.0,
"runs_allowed": 904.0,
"run_differential": -177.0,
"run_differential_per_game": -1.1346,
"avg_runs_scored": 4.6603,
"avg_runs_allowed": 5.7949,
"offense_index": 1.0407,
"defense_index": 0.7727,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 6.4,
"run_differential": -23.0
},
"available": true,
"quality_score": -0.3588
},
"opponent": {
"team": "ARI",
"games": 156,
"wins": 82,
"losses": 74,
"win_pct": 0.5256,
"runs_scored": 693.0,
"runs_allowed": 694.0,
"run_differential": -1.0,
"run_differential_per_game": -0.0064,
"avg_runs_scored": 4.4423,
"avg_runs_allowed": 4.4487,
"offense_index": 0.9921,
"defense_index": 1.0065,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 5.0,
"run_differential": -3.0
},
"available": true,
"quality_score": -0.014
},
"edges": {
"quality_edge": -0.3448,
"offense_edge": 0.0407,
"opponent_offense_edge": -0.0079,
"defense_strength": -0.2273,
"opponent_defense_weakness": -0.0065,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9797,
"run_prevention": 1.0387,
"strikeout": 0.9903
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "607536",
"profile": {
"available": true,
"pitcher_id": "607536",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 531.0,
"k_percent": 18.1,
"bb_percent": 4.9,
"woba": 0.377,
"xwoba": 0.35,
"sweet_spot_percent": 34.2,
"barrel_batted_rate": 10.6,
"hard_hit_percent": 43.1,
"avg_best_speed": 79.712,
"avg_hyper_speed": 95.1875,
"whiff_percent": 22.3,
"swing_percent": 51.1
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.9501,
"command_and_miss": -0.1693,
"regression_edge": 0.7714,
"xwoba_edge": -1.1071,
"barrel_edge": -0.7556,
"hard_hit_edge": -0.7429,
"whiff_edge": -0.3929,
"bb_edge": 1.0625,
"pitch_design_score": -0.1539
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "607536",
"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": 87.10896327807998,
"release_spin_rate": 2265.301600180975,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 87.10896327807998,
"release_spin_rate": 2265.301600180975,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.109,
"release_spin_rate": 2265.3016,
"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.1539,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.0994,
"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.5113,
"sample_weight": 1.0,
"run_prevention_factor": 1.0435,
"strikeout_factor": 0.9626,
"walk_factor": 0.915,
"homer_factor": 1.1234,
"woba_minus_xwoba": 0.027,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "607536",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0435,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0435,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.915,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1234,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9626,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 6,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 2,
"predicted_SO": 2,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 22,
"Pitches": 97,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_CHW@KC | away | Anthony Kay | Anthony Kay | True | 5.0 | 4.0 | -3 | 3 | 4 | 1 | 7/7 | 0/1 | 5/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.409395973154362,
"WHIP": 1.3557046979865772,
"IP": 149.0,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 4.897,
"recent_avg_IP": 4.333,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3325,
"sample_weight": 1.0,
"run_prevention_factor": 1.0283,
"strikeout_factor": 0.9654,
"walk_factor": 0.975,
"homer_factor": 1.0446,
"regression_flag": "neutral",
"k_percent": 18.1,
"bb_percent": 7.9,
"woba": 0.337,
"xwoba": 0.34,
"barrel_percent": 8.1,
"hard_hit_percent": 38.6,
"whiff_percent": 22.8
},
"espn_rank": {
"rank": 142,
"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": "641743",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 21.2,
"ER": 17.0,
"R": 20.0,
"H": 25.0,
"BB": 8.0,
"SO": 17.0,
"HR": 4.0,
"BF": 104.0,
"Pitches": 403.0
},
"per_game": {
"IP": 4.1,
"ER": 3.4,
"R": 4.0,
"H": 5.0,
"BB": 1.6,
"SO": 3.4,
"HR": 0.8,
"BF": 20.8,
"Pitches": 80.6
},
"rates": {
"ERA": 7.0615,
"WHIP": 1.5231,
"ER_per_IP": 0.78462,
"H_per_IP": 1.15385,
"BB_per_IP": 0.36923,
"SO_per_IP": 0.78462,
"HR_per_IP": 0.18462
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.2,
"ER": 27.0,
"R": 30.0,
"H": 54.0,
"BB": 13.0,
"SO": 41.0,
"HR": 6.0,
"BF": 225.0,
"Pitches": 852.0
},
"per_game": {
"IP": 5.0,
"ER": 2.7,
"R": 3.0,
"H": 5.4,
"BB": 1.3,
"SO": 4.1,
"HR": 0.6,
"BF": 22.5,
"Pitches": 85.2
},
"rates": {
"ERA": 4.7961,
"WHIP": 1.3224,
"ER_per_IP": 0.53289,
"H_per_IP": 1.06579,
"BB_per_IP": 0.25658,
"SO_per_IP": 0.80921,
"HR_per_IP": 0.11842
}
},
"season": {
"games": 31,
"totals": {
"IP": 149.0,
"ER": 73.0,
"R": 80.0,
"H": 149.0,
"BB": 53.0,
"SO": 121.0,
"HR": 20.0,
"BF": 669.0,
"Pitches": 2649.0
},
"per_game": {
"IP": 4.2,
"ER": 2.3548,
"R": 2.5806,
"H": 4.8065,
"BB": 1.7097,
"SO": 3.9032,
"HR": 0.6452,
"BF": 21.5806,
"Pitches": 85.4516
},
"rates": {
"ERA": 4.4094,
"WHIP": 1.3557,
"ER_per_IP": 0.48993,
"H_per_IP": 1.0,
"BB_per_IP": 0.3557,
"SO_per_IP": 0.81208,
"HR_per_IP": 0.13423
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.875,
"predicted_H": 4.994,
"predicted_BB": 1.548,
"predicted_SO": 3.794,
"predicted_HR": 0.701,
"predicted_ERA": 5.5786,
"predicted_WHIP": 1.4106
}
},
"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.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.875,
"final": 2.9261,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 4.994,
"final": 5.8138,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.548,
"final": 0.9154,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.794,
"final": 4.2869,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.701,
"final": 0.4145,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.5786,
"final": 5.5786,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4106,
"final": 1.4106,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 50.2,
"ER": 27,
"H": 54,
"BB": 13,
"SO": 41,
"HR": 6,
"ERA": 4.796052631578947,
"WHIP": 1.3223684210526314,
"K9": 7.282894736842104,
"HR9": 1.0657894736842104,
"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.0360228938394216,
"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": 7.0,
"predicted_BB": 0.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "641743",
"player_name": "Anthony Kay",
"position": "Starter",
"team": "CHW",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 4.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 5.0,
"delta": 0.3333,
"percent_delta": 0.0714,
"direction": "boost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 5.0,
"delta": 0.3333,
"percent_delta": 0.0714,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 5.0,
"delta": 0.3333,
"percent_delta": 0.0714,
"direction": "boost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 5.0,
"delta": 0.3333,
"percent_delta": 0.0714,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CHW",
"games": 156,
"wins": 80,
"losses": 76,
"win_pct": 0.5128,
"runs_scored": 733.0,
"runs_allowed": 691.0,
"run_differential": 42.0,
"run_differential_per_game": 0.2692,
"avg_runs_scored": 4.6987,
"avg_runs_allowed": 4.4295,
"offense_index": 1.0493,
"defense_index": 1.0109,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.5,
"run_differential": 3.0
},
"available": true,
"quality_score": 0.0439
},
"opponent": {
"team": "KC",
"games": 156,
"wins": 67,
"losses": 89,
"win_pct": 0.4295,
"runs_scored": 656.0,
"runs_allowed": 758.0,
"run_differential": -102.0,
"run_differential_per_game": -0.6538,
"avg_runs_scored": 4.2051,
"avg_runs_allowed": 4.859,
"offense_index": 0.9391,
"defense_index": 0.9216,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.2,
"avg_runs_allowed": 4.3,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.2102
},
"edges": {
"quality_edge": 0.2541,
"offense_edge": 0.0493,
"opponent_offense_edge": -0.0609,
"defense_strength": 0.0109,
"opponent_defense_weakness": 0.0784,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0129,
"run_prevention": 0.9765,
"strikeout": 1.0125
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "641743",
"profile": {
"available": true,
"pitcher_id": "641743",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 642.0,
"k_percent": 18.1,
"bb_percent": 7.9,
"woba": 0.337,
"xwoba": 0.34,
"sweet_spot_percent": 34.2,
"barrel_batted_rate": 8.1,
"hard_hit_percent": 38.6,
"avg_best_speed": 76.5358,
"avg_hyper_speed": 94.1794,
"whiff_percent": 22.8,
"swing_percent": 46.9
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.4434,
"command_and_miss": -0.2943,
"regression_edge": -0.0857,
"xwoba_edge": -0.8214,
"barrel_edge": -0.2,
"hard_hit_edge": -0.1,
"whiff_edge": -0.3214,
"bb_edge": 0.3125,
"pitch_design_score": 0.011
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "641743",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 86,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 90.05311954879002,
"release_spin_rate": 2291.8657796524776,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 90.05311954879002,
"release_spin_rate": 2291.8657796524776,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.0531,
"release_spin_rate": 2291.8658,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.011,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0783,
"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.3325,
"sample_weight": 1.0,
"run_prevention_factor": 1.0283,
"strikeout_factor": 0.9654,
"walk_factor": 0.975,
"homer_factor": 1.0446,
"woba_minus_xwoba": -0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "641743",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0283,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0283,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.975,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0446,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9654,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 7,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 0,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 84,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_CHW@KC | home | Daniel Lynch IV | Daniel Lynch IV | True | 5.2 | 4.0 | -5 | 1 | 9 | 8 | 3/7 | 3/3 | 4/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.28695652173913,
"WHIP": 1.0695652173913044,
"IP": 76.2,
"games_started": null,
"games_pitched": 54,
"role_avg_IP": 3.833,
"recent_avg_IP": 4.533,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0294,
"sample_weight": 1.0,
"run_prevention_factor": 1.0025,
"strikeout_factor": 0.958,
"walk_factor": 0.965,
"homer_factor": 0.9656,
"regression_flag": "negative_pitcher_regression",
"k_percent": 16.7,
"bb_percent": 7.4,
"woba": 0.273,
"xwoba": 0.309,
"barrel_percent": 5.6,
"hard_hit_percent": 37.2,
"whiff_percent": 22.9
},
"espn_rank": {
"rank": 156,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 76.2,
"season_ERA": 3.287,
"season_WHIP": 1.07,
"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": 15.602,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7573,
"prior_weight": 0.2427
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663738",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 54,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.2,
"ER": 11.0,
"R": 11.0,
"H": 20.0,
"BB": 7.0,
"SO": 11.0,
"HR": 2.0,
"BF": 94.0,
"Pitches": 352.0
},
"per_game": {
"IP": 4.2,
"ER": 2.2,
"R": 2.2,
"H": 4.0,
"BB": 1.4,
"SO": 2.2,
"HR": 0.4,
"BF": 18.8,
"Pitches": 70.4
},
"rates": {
"ERA": 4.3676,
"WHIP": 1.1912,
"ER_per_IP": 0.48529,
"H_per_IP": 0.88235,
"BB_per_IP": 0.30882,
"SO_per_IP": 0.48529,
"HR_per_IP": 0.08824
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 32.2,
"ER": 18.0,
"R": 19.0,
"H": 30.0,
"BB": 11.0,
"SO": 18.0,
"HR": 4.0,
"BF": 137.0,
"Pitches": 492.0
},
"per_game": {
"IP": 3.1,
"ER": 1.8,
"R": 1.9,
"H": 3.0,
"BB": 1.1,
"SO": 1.8,
"HR": 0.4,
"BF": 13.7,
"Pitches": 49.2
},
"rates": {
"ERA": 4.9592,
"WHIP": 1.2551,
"ER_per_IP": 0.55102,
"H_per_IP": 0.91837,
"BB_per_IP": 0.33673,
"SO_per_IP": 0.55102,
"HR_per_IP": 0.12245
}
},
"season": {
"games": 54,
"totals": {
"IP": 76.2,
"ER": 28.0,
"R": 32.0,
"H": 59.0,
"BB": 23.0,
"SO": 52.0,
"HR": 6.0,
"BF": 312.0,
"Pitches": 1146.0
},
"per_game": {
"IP": 1.1,
"ER": 0.5185,
"R": 0.5926,
"H": 1.0926,
"BB": 0.4259,
"SO": 0.963,
"HR": 0.1111,
"BF": 5.7778,
"Pitches": 21.2222
},
"rates": {
"ERA": 3.287,
"WHIP": 1.0696,
"ER_per_IP": 0.36522,
"H_per_IP": 0.76957,
"BB_per_IP": 0.3,
"SO_per_IP": 0.67826,
"HR_per_IP": 0.07826
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.0,
"predicted_ER": 1.987,
"predicted_H": 3.641,
"predicted_BB": 1.342,
"predicted_SO": 2.6,
"predicted_HR": 0.448,
"predicted_ERA": 4.4145,
"predicted_WHIP": 1.2298
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4525,
"form_weight": 0.5475,
"form_reliability": 0.7573,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.602,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7573,
"prior_weight": 0.2427
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 4.0,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.987,
"final": 1.5403,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 3.641,
"final": 3.3509,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.342,
"final": 2.0923,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 2.6,
"final": 3.2336,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.448,
"final": 0.2453,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4145,
"final": 4.4145,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2298,
"final": 1.2298,
"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": 32.2,
"ER": 18,
"H": 30,
"BB": 11,
"SO": 18,
"HR": 4,
"ERA": 4.959183673469387,
"WHIP": 1.2551020408163263,
"K9": 4.959183673469387,
"HR9": 1.1020408163265305,
"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-16T00:00:00"
},
"recent_form_boost": 1.0526934765461884,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_BB": 3.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.602,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7573,
"prior_weight": 0.2427
}
},
{
"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": 3,
"predicted_BB": 3,
"predicted_SO": 4,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663738",
"player_name": "Daniel Lynch IV",
"position": "Starter",
"team": "KC",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": "KC",
"games": 156,
"wins": 67,
"losses": 89,
"win_pct": 0.4295,
"runs_scored": 656.0,
"runs_allowed": 758.0,
"run_differential": -102.0,
"run_differential_per_game": -0.6538,
"avg_runs_scored": 4.2051,
"avg_runs_allowed": 4.859,
"offense_index": 0.9391,
"defense_index": 0.9216,
"current_streak": "L4",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.2,
"avg_runs_allowed": 4.3,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.2102
},
"opponent": {
"team": "CHW",
"games": 156,
"wins": 80,
"losses": 76,
"win_pct": 0.5128,
"runs_scored": 733.0,
"runs_allowed": 691.0,
"run_differential": 42.0,
"run_differential_per_game": 0.2692,
"avg_runs_scored": 4.6987,
"avg_runs_allowed": 4.4295,
"offense_index": 1.0493,
"defense_index": 1.0109,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.5,
"run_differential": 3.0
},
"available": true,
"quality_score": 0.0439
},
"edges": {
"quality_edge": -0.2541,
"offense_edge": -0.0609,
"opponent_offense_edge": 0.0493,
"defense_strength": -0.0784,
"opponent_defense_weakness": -0.0109,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9855,
"run_prevention": 1.0284,
"strikeout": 0.9884
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663738",
"profile": {
"available": true,
"pitcher_id": "663738",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 287.0,
"k_percent": 16.7,
"bb_percent": 7.4,
"woba": 0.273,
"xwoba": 0.309,
"sweet_spot_percent": 30.3,
"barrel_batted_rate": 5.6,
"hard_hit_percent": 37.2,
"avg_best_speed": 78.5637,
"avg_hyper_speed": 93.8722,
"whiff_percent": 22.9,
"swing_percent": 46.9
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.2964,
"command_and_miss": -0.3543,
"regression_edge": -1.0286,
"xwoba_edge": 0.0643,
"barrel_edge": 0.3556,
"hard_hit_edge": 0.1,
"whiff_edge": -0.3071,
"bb_edge": 0.4375,
"pitch_design_score": -0.0051
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663738",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 65,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 65,
"pitch_usage": 0.0,
"release_speed": 89.7672524619299,
"release_spin_rate": 2089.0752149624964,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 65,
"pitch_usage": 0.0,
"release_speed": 89.7672524619299,
"release_spin_rate": 2089.0752149624964,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.7673,
"release_spin_rate": 2089.0752,
"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.0051,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0361,
"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.0294,
"sample_weight": 1.0,
"run_prevention_factor": 1.0025,
"strikeout_factor": 0.958,
"walk_factor": 0.965,
"homer_factor": 0.9656,
"woba_minus_xwoba": -0.036,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "663738",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0025,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0025,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.965,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9656,
"adjusted": 0
},
"predicted_SO": {
"original": 2.0,
"factor": 0.958,
"adjusted": 2
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 3,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 3,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 101,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 8",
"detail": "Actual minus predicted earned runs was +8; this is the primary run-prevention error."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was +4."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +3."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_CIN@ATL | away | Brandon Williamson | Brandon Williamson | True | 4.0 | 6.0 | 6 | 5 | 0 | -5 | 6/3 | 1/0 | 1/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.564885496183207,
"WHIP": 1.534351145038168,
"IP": 43.2,
"games_started": null,
"games_pitched": 10,
"role_avg_IP": 4.762,
"recent_avg_IP": 4.4,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.6409,
"sample_weight": 0.748,
"run_prevention_factor": 1.0545,
"strikeout_factor": 0.9711,
"walk_factor": 1.0696,
"homer_factor": 1.0927,
"regression_flag": "neutral",
"k_percent": 15.8,
"bb_percent": 13.8,
"woba": 0.355,
"xwoba": 0.378,
"barrel_percent": 9.7,
"hard_hit_percent": 41.8,
"whiff_percent": 24.4
},
"espn_rank": {
"rank": 690,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.5625,
"last_10": 0.43749999999999994
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 10.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6667,
"prior_weight": 0.3333
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "682227",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 10,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 18.2,
"ER": 12.0,
"R": 15.0,
"H": 18.0,
"BB": 11.0,
"SO": 16.0,
"HR": 4.0,
"BF": 84.0,
"Pitches": 303.0
},
"per_game": {
"IP": 3.2,
"ER": 2.4,
"R": 3.0,
"H": 3.6,
"BB": 2.2,
"SO": 3.2,
"HR": 0.8,
"BF": 16.8,
"Pitches": 60.6
},
"rates": {
"ERA": 5.7857,
"WHIP": 1.5536,
"ER_per_IP": 0.64286,
"H_per_IP": 0.96429,
"BB_per_IP": 0.58929,
"SO_per_IP": 0.85714,
"HR_per_IP": 0.21429
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 43.2,
"ER": 27.0,
"R": 30.0,
"H": 40.0,
"BB": 27.0,
"SO": 31.0,
"HR": 8.0,
"BF": 196.0,
"Pitches": 763.0
},
"per_game": {
"IP": 4.1,
"ER": 2.7,
"R": 3.0,
"H": 4.0,
"BB": 2.7,
"SO": 3.1,
"HR": 0.8,
"BF": 19.6,
"Pitches": 76.3
},
"rates": {
"ERA": 5.5649,
"WHIP": 1.5344,
"ER_per_IP": 0.61832,
"H_per_IP": 0.91603,
"BB_per_IP": 0.61832,
"SO_per_IP": 0.70992,
"HR_per_IP": 0.18321
}
},
"season": {
"games": 10,
"totals": {
"IP": 43.2,
"ER": 27.0,
"R": 30.0,
"H": 40.0,
"BB": 27.0,
"SO": 31.0,
"HR": 8.0,
"BF": 196.0,
"Pitches": 763.0
},
"per_game": {
"IP": 4.1,
"ER": 2.7,
"R": 3.0,
"H": 4.0,
"BB": 2.7,
"SO": 3.1,
"HR": 0.8,
"BF": 19.6,
"Pitches": 76.3
},
"rates": {
"ERA": 5.5649,
"WHIP": 1.5344,
"ER_per_IP": 0.61832,
"H_per_IP": 0.91603,
"BB_per_IP": 0.61832,
"SO_per_IP": 0.70992,
"HR_per_IP": 0.18321
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 2.481,
"predicted_H": 4.008,
"predicted_BB": 2.209,
"predicted_SO": 3.528,
"predicted_HR": 0.769,
"predicted_ERA": 5.3225,
"predicted_WHIP": 1.4823
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4908,
"form_weight": 0.5092,
"form_reliability": 0.6667,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 10.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6667,
"prior_weight": 0.3333
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.1,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 6.0,
"form": 2.481,
"final": 4.2082,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.008,
"final": 4.0041,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.209,
"final": 1.6156,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 3.528,
"final": 2.2872,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.769,
"final": 1.3732,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.3225,
"final": 5.3225,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4823,
"final": 1.4823,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 43.2,
"ER": 27,
"H": 40,
"BB": 27,
"SO": 31,
"HR": 8,
"ERA": 5.564885496183208,
"WHIP": 1.5343511450381682,
"K9": 6.389312977099238,
"HR9": 1.6488549618320614,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-17T00:00:00"
},
"recent_form_boost": 1.1278161592070393,
"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": 1.0,
"predicted_SO": 1.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 10.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6667,
"prior_weight": 0.3333
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.0,
"predicted_ER": 6,
"predicted_H": 4,
"predicted_BB": 1,
"predicted_SO": 1,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "682227",
"player_name": "Brandon Williamson",
"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": 6.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 4.6667,
"predicted_SO": 1.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 6.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 4.0,
"predicted_SO": 1.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": 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.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 6.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 4.0,
"predicted_R": 6.0,
"predicted_SO": 1.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": 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.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 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": {}
}
],
"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": 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.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 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.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CIN",
"games": 156,
"wins": 72,
"losses": 84,
"win_pct": 0.4615,
"runs_scored": 642.0,
"runs_allowed": 805.0,
"run_differential": -163.0,
"run_differential_per_game": -1.0449,
"avg_runs_scored": 4.1154,
"avg_runs_allowed": 5.1603,
"offense_index": 0.9176,
"defense_index": 0.8691,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 7.2,
"run_differential": -41.0
},
"available": true,
"quality_score": -0.2309
},
"opponent": {
"team": "ATL",
"games": 156,
"wins": 92,
"losses": 64,
"win_pct": 0.5897,
"runs_scored": 722.0,
"runs_allowed": 602.0,
"run_differential": 120.0,
"run_differential_per_game": 0.7692,
"avg_runs_scored": 4.6282,
"avg_runs_allowed": 3.859,
"offense_index": 1.032,
"defense_index": 1.1622,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 4.2,
"run_differential": 12.0
},
"available": true,
"quality_score": 0.2406
},
"edges": {
"quality_edge": -0.4715,
"offense_edge": -0.0824,
"opponent_offense_edge": 0.032,
"defense_strength": -0.1309,
"opponent_defense_weakness": -0.1622,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.9759,
"run_prevention": 1.0418,
"strikeout": 0.9833
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "682227",
"profile": {
"available": true,
"pitcher_id": "682227",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 187.0,
"k_percent": 15.8,
"bb_percent": 13.8,
"woba": 0.355,
"xwoba": 0.378,
"sweet_spot_percent": 36.6,
"barrel_batted_rate": 9.7,
"hard_hit_percent": 41.8,
"avg_best_speed": 76.4551,
"avg_hyper_speed": 94.2242,
"whiff_percent": 24.4,
"swing_percent": 44.0
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -1.0864,
"command_and_miss": -0.6571,
"regression_edge": -0.6571,
"xwoba_edge": -1.9071,
"barrel_edge": -0.5556,
"hard_hit_edge": -0.5571,
"whiff_edge": -0.0929,
"bb_edge": -1.1625,
"pitch_design_score": -0.1483
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "682227",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 73,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 73,
"pitch_usage": 0.0,
"release_speed": 87.20960880352149,
"release_spin_rate": 2285.3272132739307,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 73,
"pitch_usage": 0.0,
"release_speed": 87.20960880352149,
"release_spin_rate": 2285.3272132739307,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.2096,
"release_spin_rate": 2285.3272,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.1483,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.0591,
"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.6409,
"sample_weight": 0.748,
"run_prevention_factor": 1.0545,
"strikeout_factor": 0.9711,
"walk_factor": 1.0696,
"homer_factor": 1.0927,
"woba_minus_xwoba": -0.023,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "682227",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0408,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0408,
"adjusted": 5
},
"predicted_BB": {
"original": 4.0,
"factor": 1.0521,
"adjusted": 4
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0693,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9784,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.0,
"predicted_H": 6,
"predicted_R": 6,
"predicted_ER": 6,
"predicted_BB": 1,
"predicted_SO": 1,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 20,
"Pitches": 84,
"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": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +6 outs from the projected workload."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
},
{
"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/20260922_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"
}
} |
| 20260922 | 20260922_CIN@ATL | home | JR Ritchie | JR Ritchie | True | 4.2 | 5.0 | 1 | 2 | 1 | -1 | 2/4 | 2/3 | 7/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.026595744680852,
"WHIP": 1.4680851063829787,
"IP": 62.2,
"games_started": null,
"games_pitched": 15,
"role_avg_IP": 4.926,
"recent_avg_IP": 4.533,
"last_start_IP": 4.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.5222,
"sample_weight": 1.0,
"run_prevention_factor": 1.0444,
"strikeout_factor": 0.9843,
"walk_factor": 1.091,
"homer_factor": 1.0939,
"regression_flag": "neutral",
"k_percent": 20.9,
"bb_percent": 13.7,
"woba": 0.344,
"xwoba": 0.349,
"barrel_percent": 9.7,
"hard_hit_percent": 40.9,
"whiff_percent": 23.3
},
"espn_rank": {
"rank": 596,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "702275",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 15,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 17.2,
"ER": 12.0,
"R": 12.0,
"H": 16.0,
"BB": 10.0,
"SO": 16.0,
"HR": 4.0,
"BF": 78.0,
"Pitches": 314.0
},
"per_game": {
"IP": 3.2,
"ER": 2.4,
"R": 2.4,
"H": 3.2,
"BB": 2.0,
"SO": 3.2,
"HR": 0.8,
"BF": 15.6,
"Pitches": 62.8
},
"rates": {
"ERA": 6.1132,
"WHIP": 1.4717,
"ER_per_IP": 0.67925,
"H_per_IP": 0.90566,
"BB_per_IP": 0.56604,
"SO_per_IP": 0.90566,
"HR_per_IP": 0.22642
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 37.0,
"ER": 22.0,
"R": 23.0,
"H": 33.0,
"BB": 22.0,
"SO": 37.0,
"HR": 7.0,
"BF": 164.0,
"Pitches": 656.0
},
"per_game": {
"IP": 3.2,
"ER": 2.2,
"R": 2.3,
"H": 3.3,
"BB": 2.2,
"SO": 3.7,
"HR": 0.7,
"BF": 16.4,
"Pitches": 65.6
},
"rates": {
"ERA": 5.3514,
"WHIP": 1.4865,
"ER_per_IP": 0.59459,
"H_per_IP": 0.89189,
"BB_per_IP": 0.59459,
"SO_per_IP": 1.0,
"HR_per_IP": 0.18919
}
},
"season": {
"games": 15,
"totals": {
"IP": 62.2,
"ER": 35.0,
"R": 38.0,
"H": 54.0,
"BB": 38.0,
"SO": 58.0,
"HR": 11.0,
"BF": 278.0,
"Pitches": 1105.0
},
"per_game": {
"IP": 4.1,
"ER": 2.3333,
"R": 2.5333,
"H": 3.6,
"BB": 2.5333,
"SO": 3.8667,
"HR": 0.7333,
"BF": 18.5333,
"Pitches": 73.6667
},
"rates": {
"ERA": 5.0266,
"WHIP": 1.4681,
"ER_per_IP": 0.55851,
"H_per_IP": 0.8617,
"BB_per_IP": 0.60638,
"SO_per_IP": 0.92553,
"HR_per_IP": 0.17553
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.0,
"predicted_ER": 2.396,
"predicted_H": 3.672,
"predicted_BB": 2.137,
"predicted_SO": 3.781,
"predicted_HR": 0.762,
"predicted_ERA": 5.3692,
"predicted_WHIP": 1.4462
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4556,
"form_weight": 0.5444,
"form_reliability": 0.75,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.0,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.396,
"final": 2.2156,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 3.672,
"final": 2.9102,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.137,
"final": 2.0746,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 3.781,
"final": 5.2477,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.762,
"final": 0.4148,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.3692,
"final": 5.3692,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4462,
"final": 1.4462,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 37.0,
"ER": 22,
"H": 33,
"BB": 22,
"SO": 37,
"HR": 7,
"ERA": 5.351351351351352,
"WHIP": 1.4864864864864864,
"K9": 9.0,
"HR9": 1.7027027027027026,
"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-16T00:00:00"
},
"recent_form_boost": 1.1025969514496632,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 2.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "702275",
"player_name": "JR Ritchie",
"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": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 4.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 2.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ATL",
"games": 156,
"wins": 92,
"losses": 64,
"win_pct": 0.5897,
"runs_scored": 722.0,
"runs_allowed": 602.0,
"run_differential": 120.0,
"run_differential_per_game": 0.7692,
"avg_runs_scored": 4.6282,
"avg_runs_allowed": 3.859,
"offense_index": 1.032,
"defense_index": 1.1622,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 4.2,
"run_differential": 12.0
},
"available": true,
"quality_score": 0.2406
},
"opponent": {
"team": "CIN",
"games": 156,
"wins": 72,
"losses": 84,
"win_pct": 0.4615,
"runs_scored": 642.0,
"runs_allowed": 805.0,
"run_differential": -163.0,
"run_differential_per_game": -1.0449,
"avg_runs_scored": 4.1154,
"avg_runs_allowed": 5.1603,
"offense_index": 0.9176,
"defense_index": 0.8691,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 7.2,
"run_differential": -41.0
},
"available": true,
"quality_score": -0.2309
},
"edges": {
"quality_edge": 0.4715,
"offense_edge": 0.032,
"opponent_offense_edge": -0.0824,
"defense_strength": 0.1622,
"opponent_defense_weakness": 0.1309,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.027,
"run_prevention": 0.947,
"strikeout": 1.0207
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "702275",
"profile": {
"available": true,
"pitcher_id": "702275",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 254.0,
"k_percent": 20.9,
"bb_percent": 13.7,
"woba": 0.344,
"xwoba": 0.349,
"sweet_spot_percent": 31.3,
"barrel_batted_rate": 9.7,
"hard_hit_percent": 40.9,
"avg_best_speed": 80.0658,
"avg_hyper_speed": 94.1006,
"whiff_percent": 23.3,
"swing_percent": 41.5
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.7235,
"command_and_miss": -0.3793,
"regression_edge": -0.1429,
"xwoba_edge": -1.0786,
"barrel_edge": -0.5556,
"hard_hit_edge": -0.4286,
"whiff_edge": -0.25,
"bb_edge": -1.1375,
"pitch_design_score": -0.0512
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "702275",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 53,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 53,
"pitch_usage": 0.0,
"release_speed": 88.94346012532931,
"release_spin_rate": 2338.3616406057945,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 53,
"pitch_usage": 0.0,
"release_speed": 88.94346012532931,
"release_spin_rate": 2338.3616406057945,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.9435,
"release_spin_rate": 2338.3616,
"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.0512,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.3656,
"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.5222,
"sample_weight": 1.0,
"run_prevention_factor": 1.0444,
"strikeout_factor": 0.9843,
"walk_factor": 1.091,
"homer_factor": 1.0939,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "702275",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0444,
"adjusted": 4
},
"predicted_H": {
"original": 5.0,
"factor": 1.0444,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 1.091,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0939,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9843,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 19,
"Pitches": 85,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_CLE@BOS | away | Parker Messick | Parker Messick | True | 6.0 | 5.0 | -3 | 3 | 1 | -2 | 1/5 | 2/1 | 8/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.5738317757009344,
"WHIP": 1.0373831775700935,
"IP": 178.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.944,
"recent_avg_IP": 5.867,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.5736,
"sample_weight": 1.0,
"run_prevention_factor": 0.9512,
"strikeout_factor": 1.03,
"walk_factor": 0.949,
"homer_factor": 0.9065,
"regression_flag": "neutral",
"k_percent": 26.2,
"bb_percent": 6.6,
"woba": 0.27,
"xwoba": 0.273,
"barrel_percent": 5.1,
"hard_hit_percent": 33.8,
"whiff_percent": 26.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": 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": "800048",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.1,
"ER": 9.0,
"R": 9.0,
"H": 25.0,
"BB": 7.0,
"SO": 34.0,
"HR": 3.0,
"BF": 120.0,
"Pitches": 483.0
},
"per_game": {
"IP": 6.0,
"ER": 1.8,
"R": 1.8,
"H": 5.0,
"BB": 1.4,
"SO": 6.8,
"HR": 0.6,
"BF": 24.0,
"Pitches": 96.6
},
"rates": {
"ERA": 2.7614,
"WHIP": 1.0909,
"ER_per_IP": 0.30682,
"H_per_IP": 0.85227,
"BB_per_IP": 0.23864,
"SO_per_IP": 1.15909,
"HR_per_IP": 0.10227
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.2,
"ER": 16.0,
"R": 17.0,
"H": 50.0,
"BB": 11.0,
"SO": 70.0,
"HR": 6.0,
"BF": 244.0,
"Pitches": 965.0
},
"per_game": {
"IP": 6.0,
"ER": 1.6,
"R": 1.7,
"H": 5.0,
"BB": 1.1,
"SO": 7.0,
"HR": 0.6,
"BF": 24.4,
"Pitches": 96.5
},
"rates": {
"ERA": 2.3736,
"WHIP": 1.0055,
"ER_per_IP": 0.26374,
"H_per_IP": 0.82418,
"BB_per_IP": 0.18132,
"SO_per_IP": 1.15385,
"HR_per_IP": 0.0989
}
},
"season": {
"games": 30,
"totals": {
"IP": 178.1,
"ER": 51.0,
"R": 55.0,
"H": 138.0,
"BB": 47.0,
"SO": 186.0,
"HR": 17.0,
"BF": 711.0,
"Pitches": 2788.0
},
"per_game": {
"IP": 6.0,
"ER": 1.7,
"R": 1.8333,
"H": 4.6,
"BB": 1.5667,
"SO": 6.2,
"HR": 0.5667,
"BF": 23.7,
"Pitches": 92.9333
},
"rates": {
"ERA": 2.5738,
"WHIP": 1.0374,
"ER_per_IP": 0.28598,
"H_per_IP": 0.77383,
"BB_per_IP": 0.26355,
"SO_per_IP": 1.04299,
"HR_per_IP": 0.09533
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.916,
"predicted_H": 5.092,
"predicted_BB": 1.472,
"predicted_SO": 6.636,
"predicted_HR": 0.64,
"predicted_ERA": 2.8741,
"predicted_WHIP": 1.094
}
},
"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": 3.0,
"form": 1.916,
"final": 2.3608,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 5.092,
"final": 3.4127,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.472,
"final": 1.6887,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 6.636,
"final": 6.375,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.64,
"final": 0.7877,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.8741,
"final": 2.8741,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.094,
"final": 1.094,
"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.2,
"ER": 16,
"H": 50,
"BB": 11,
"SO": 70,
"HR": 6,
"ERA": 2.3736263736263736,
"WHIP": 1.0054945054945055,
"K9": 10.384615384615383,
"HR9": 0.8901098901098901,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-16T00:00:00"
},
"recent_form_boost": 0.7555780919308038,
"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": 1.0,
"predicted_BB": 2.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
},
{
"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": 1,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "800048",
"player_name": "Parker Messick",
"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": 2.0,
"predicted_ER": 3.0,
"predicted_H": 1.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 1.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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 1.0,
"predicted_HR": 1.0,
"predicted_IP": 6.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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 8.0,
"delta": 2.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 8.0,
"delta": 2.0,
"percent_delta": 0.3333,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CLE",
"games": 156,
"wins": 81,
"losses": 75,
"win_pct": 0.5192,
"runs_scored": 649.0,
"runs_allowed": 647.0,
"run_differential": 2.0,
"run_differential_per_game": 0.0128,
"avg_runs_scored": 4.1603,
"avg_runs_allowed": 4.1474,
"offense_index": 0.9276,
"defense_index": 1.0814,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 4.2,
"run_differential": 14.0
},
"available": true,
"quality_score": 0.0879
},
"opponent": {
"team": "BOS",
"games": 156,
"wins": 84,
"losses": 72,
"win_pct": 0.5385,
"runs_scored": 678.0,
"runs_allowed": 598.0,
"run_differential": 80.0,
"run_differential_per_game": 0.5128,
"avg_runs_scored": 4.3462,
"avg_runs_allowed": 3.8333,
"offense_index": 0.9691,
"defense_index": 1.17,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.0,
"avg_runs_allowed": 3.4,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.0606
},
"edges": {
"quality_edge": 0.0273,
"offense_edge": -0.0724,
"opponent_offense_edge": -0.0309,
"defense_strength": 0.0814,
"opponent_defense_weakness": -0.17,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0048,
"run_prevention": 0.9856,
"strikeout": 1.0033
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "800048",
"profile": {
"available": true,
"pitcher_id": "800048",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 679.0,
"k_percent": 26.2,
"bb_percent": 6.6,
"woba": 0.27,
"xwoba": 0.273,
"sweet_spot_percent": 31.4,
"barrel_batted_rate": 5.1,
"hard_hit_percent": 33.8,
"avg_best_speed": 76.0732,
"avg_hyper_speed": 93.4321,
"whiff_percent": 26.0,
"swing_percent": 48.4
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.8283,
"command_and_miss": 0.4514,
"regression_edge": -0.0857,
"xwoba_edge": 1.0929,
"barrel_edge": 0.4667,
"hard_hit_edge": 0.5857,
"whiff_edge": 0.1357,
"bb_edge": 0.6375,
"pitch_design_score": 0.0121
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "800048",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 99,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 99,
"pitch_usage": 0.0,
"release_speed": 90.07325626493206,
"release_spin_rate": 2104.9326510494875,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 99,
"pitch_usage": 0.0,
"release_speed": 90.07325626493206,
"release_spin_rate": 2104.9326510494875,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.0733,
"release_spin_rate": 2104.9327,
"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.5736,
"sample_weight": 1.0,
"run_prevention_factor": 0.9512,
"strikeout_factor": 1.03,
"walk_factor": 0.949,
"homer_factor": 0.9065,
"woba_minus_xwoba": -0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "800048",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9512,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9512,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.949,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9065,
"adjusted": 1
},
"predicted_SO": {
"original": 7.0,
"factor": 1.03,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 1,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 8,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 99,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was +4."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_CLE@BOS | home | Payton Tolle | Payton Tolle | True | 5.2 | 5.2 | 0 | 3 | 2 | -1 | 4/8 | 2/2 | 6/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.020979020979021,
"WHIP": 1.06993006993007,
"IP": 143.0,
"games_started": null,
"games_pitched": 25,
"role_avg_IP": 5.72,
"recent_avg_IP": 5.6,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.8185,
"sample_weight": 1.0,
"run_prevention_factor": 0.9304,
"strikeout_factor": 1.0574,
"walk_factor": 0.949,
"homer_factor": 0.9158,
"regression_flag": "neutral",
"k_percent": 28.9,
"bb_percent": 6.6,
"woba": 0.282,
"xwoba": 0.253,
"barrel_percent": 6.3,
"hard_hit_percent": 34.7,
"whiff_percent": 28.1
},
"espn_rank": {
"rank": 41,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "801139",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 25,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.0,
"ER": 10.0,
"R": 10.0,
"H": 24.0,
"BB": 7.0,
"SO": 38.0,
"HR": 2.0,
"BF": 114.0,
"Pitches": 478.0
},
"per_game": {
"IP": 5.2,
"ER": 2.0,
"R": 2.0,
"H": 4.8,
"BB": 1.4,
"SO": 7.6,
"HR": 0.4,
"BF": 22.8,
"Pitches": 95.6
},
"rates": {
"ERA": 3.2143,
"WHIP": 1.1071,
"ER_per_IP": 0.35714,
"H_per_IP": 0.85714,
"BB_per_IP": 0.25,
"SO_per_IP": 1.35714,
"HR_per_IP": 0.07143
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 59.0,
"ER": 19.0,
"R": 19.0,
"H": 50.0,
"BB": 13.0,
"SO": 79.0,
"HR": 7.0,
"BF": 234.0,
"Pitches": 919.0
},
"per_game": {
"IP": 6.0,
"ER": 1.9,
"R": 1.9,
"H": 5.0,
"BB": 1.3,
"SO": 7.9,
"HR": 0.7,
"BF": 23.4,
"Pitches": 91.9
},
"rates": {
"ERA": 2.8983,
"WHIP": 1.0678,
"ER_per_IP": 0.32203,
"H_per_IP": 0.84746,
"BB_per_IP": 0.22034,
"SO_per_IP": 1.33898,
"HR_per_IP": 0.11864
}
},
"season": {
"games": 25,
"totals": {
"IP": 143.0,
"ER": 48.0,
"R": 52.0,
"H": 115.0,
"BB": 38.0,
"SO": 166.0,
"HR": 15.0,
"BF": 575.0,
"Pitches": 2191.0
},
"per_game": {
"IP": 5.2,
"ER": 1.92,
"R": 2.08,
"H": 4.6,
"BB": 1.52,
"SO": 6.64,
"HR": 0.6,
"BF": 23.0,
"Pitches": 87.64
},
"rates": {
"ERA": 3.021,
"WHIP": 1.0699,
"ER_per_IP": 0.33566,
"H_per_IP": 0.8042,
"BB_per_IP": 0.26573,
"SO_per_IP": 1.16084,
"HR_per_IP": 0.1049
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.126,
"predicted_H": 4.992,
"predicted_BB": 1.527,
"predicted_SO": 7.2,
"predicted_HR": 0.598,
"predicted_ERA": 3.3191,
"predicted_WHIP": 1.131
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4204,
"form_weight": 0.5796,
"form_reliability": 0.8333,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.126,
"final": 2.4935,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.992,
"final": 4.5749,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.527,
"final": 1.7259,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 7.2,
"final": 4.5933,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.598,
"final": 1.1874,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.3191,
"final": 3.3191,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.131,
"final": 1.131,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 59.0,
"ER": 19,
"H": 50,
"BB": 13,
"SO": 79,
"HR": 7,
"ERA": 2.8983050847457625,
"WHIP": 1.0677966101694916,
"K9": 12.05084745762712,
"HR9": 1.0677966101694916,
"games_pitched": 10,
"quality_starts": 5,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-13T00:00:00"
},
"recent_form_boost": 0.8161619995486097,
"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": 4.0,
"predicted_BB": 2.0,
"predicted_SO": 1.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8333,
"prior_weight": 0.1667
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 3,
"predicted_H": 4,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "801139",
"player_name": "Payton Tolle",
"position": "Starter",
"team": "BOS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 5.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": "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": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.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": 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": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 7.0,
"delta": 6.0,
"percent_delta": 6.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 3,
"boosted_metrics": 1,
"deboosted_metrics": 2,
"better_metrics": 2,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 1.0,
"after": 7.0,
"delta": 6.0,
"percent_delta": 6.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"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": 4.0,
"predicted_HR": 2.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 6.0,
"delta": -1.0,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"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": {
"metric": "predicted_SO",
"before": 7.0,
"after": 6.0,
"delta": -1.0,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 6.0,
"delta": 5.0,
"percent_delta": 5.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 1.0,
"after": 6.0,
"delta": 5.0,
"percent_delta": 5.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_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": "BOS",
"games": 156,
"wins": 84,
"losses": 72,
"win_pct": 0.5385,
"runs_scored": 678.0,
"runs_allowed": 598.0,
"run_differential": 80.0,
"run_differential_per_game": 0.5128,
"avg_runs_scored": 4.3462,
"avg_runs_allowed": 3.8333,
"offense_index": 0.9691,
"defense_index": 1.17,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.0,
"avg_runs_allowed": 3.4,
"run_differential": -4.0
},
"available": true,
"quality_score": 0.0606
},
"opponent": {
"team": "CLE",
"games": 156,
"wins": 81,
"losses": 75,
"win_pct": 0.5192,
"runs_scored": 649.0,
"runs_allowed": 647.0,
"run_differential": 2.0,
"run_differential_per_game": 0.0128,
"avg_runs_scored": 4.1603,
"avg_runs_allowed": 4.1474,
"offense_index": 0.9276,
"defense_index": 1.0814,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 4.2,
"run_differential": 14.0
},
"available": true,
"quality_score": 0.0879
},
"edges": {
"quality_edge": -0.0273,
"offense_edge": -0.0309,
"opponent_offense_edge": -0.0724,
"defense_strength": 0.17,
"opponent_defense_weakness": -0.0814,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 1.0069,
"run_prevention": 0.9728,
"strikeout": 1.005
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "801139",
"profile": {
"available": true,
"pitcher_id": "801139",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 546.0,
"k_percent": 28.9,
"bb_percent": 6.6,
"woba": 0.282,
"xwoba": 0.253,
"sweet_spot_percent": 30.9,
"barrel_batted_rate": 6.3,
"hard_hit_percent": 34.7,
"avg_best_speed": 76.2876,
"avg_hyper_speed": 93.548,
"whiff_percent": 28.1,
"swing_percent": 55.4
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.9502,
"command_and_miss": 0.73,
"regression_edge": 0.8286,
"xwoba_edge": 1.6643,
"barrel_edge": 0.2,
"hard_hit_edge": 0.4571,
"whiff_edge": 0.4357,
"bb_edge": 0.6375,
"pitch_design_score": 0.1723
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "801139",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 94,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 92.93396318599987,
"release_spin_rate": 2262.3895801288368,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 92.93396318599987,
"release_spin_rate": 2262.3895801288368,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.934,
"release_spin_rate": 2262.3896,
"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.1723,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.2306,
"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.8185,
"sample_weight": 1.0,
"run_prevention_factor": 0.9304,
"strikeout_factor": 1.0574,
"walk_factor": 0.949,
"homer_factor": 0.9158,
"woba_minus_xwoba": 0.029,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "801139",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9304,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9304,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.949,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9158,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0574,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 23,
"Pitches": 91,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was +4."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_HOU@SEA | away | Cristian Javier | Cristian Javier | True | 5.0 | 2.0 | -9 | 3 | 0 | -3 | 6/1 | 3/2 | 2/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.311475409836065,
"WHIP": 1.459016393442623,
"IP": 61.0,
"games_started": null,
"games_pitched": 16,
"role_avg_IP": 4.333,
"recent_avg_IP": 4.867,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1999,
"sample_weight": 0.972,
"run_prevention_factor": 1.017,
"strikeout_factor": 1.0203,
"walk_factor": 1.0107,
"homer_factor": 1.0205,
"regression_flag": "neutral",
"k_percent": 21.3,
"bb_percent": 9.7,
"woba": 0.343,
"xwoba": 0.332,
"barrel_percent": 8.8,
"hard_hit_percent": 33.5,
"whiff_percent": 29.3
},
"espn_rank": {
"rank": 548,
"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": "664299",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 16,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.2,
"ER": 10.0,
"R": 10.0,
"H": 19.0,
"BB": 9.0,
"SO": 27.0,
"HR": 3.0,
"BF": 100.0,
"Pitches": 411.0
},
"per_game": {
"IP": 5.0,
"ER": 2.0,
"R": 2.0,
"H": 3.8,
"BB": 1.8,
"SO": 5.4,
"HR": 0.6,
"BF": 20.0,
"Pitches": 82.2
},
"rates": {
"ERA": 3.6486,
"WHIP": 1.1351,
"ER_per_IP": 0.40541,
"H_per_IP": 0.77027,
"BB_per_IP": 0.36486,
"SO_per_IP": 1.09459,
"HR_per_IP": 0.12162
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 45.2,
"ER": 19.0,
"R": 19.0,
"H": 43.0,
"BB": 11.0,
"SO": 45.0,
"HR": 7.0,
"BF": 188.0,
"Pitches": 759.0
},
"per_game": {
"IP": 4.2,
"ER": 1.9,
"R": 1.9,
"H": 4.3,
"BB": 1.1,
"SO": 4.5,
"HR": 0.7,
"BF": 18.8,
"Pitches": 75.9
},
"rates": {
"ERA": 3.7445,
"WHIP": 1.1825,
"ER_per_IP": 0.41606,
"H_per_IP": 0.94161,
"BB_per_IP": 0.24088,
"SO_per_IP": 0.9854,
"HR_per_IP": 0.15328
}
},
"season": {
"games": 16,
"totals": {
"IP": 61.0,
"ER": 36.0,
"R": 36.0,
"H": 63.0,
"BB": 26.0,
"SO": 57.0,
"HR": 10.0,
"BF": 267.0,
"Pitches": 1064.0
},
"per_game": {
"IP": 3.2,
"ER": 2.25,
"R": 2.25,
"H": 3.9375,
"BB": 1.625,
"SO": 3.5625,
"HR": 0.625,
"BF": 16.6875,
"Pitches": 66.5
},
"rates": {
"ERA": 5.3115,
"WHIP": 1.459,
"ER_per_IP": 0.59016,
"H_per_IP": 1.03279,
"BB_per_IP": 0.42623,
"SO_per_IP": 0.93443,
"HR_per_IP": 0.16393
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.135,
"predicted_H": 4.194,
"predicted_BB": 1.591,
"predicted_SO": 4.646,
"predicted_HR": 0.662,
"predicted_ERA": 4.1515,
"predicted_WHIP": 1.2498
}
},
"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": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.135,
"final": 2.5248,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.194,
"final": 5.0078,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.591,
"final": 2.2259,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.646,
"final": 3.4537,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.662,
"final": 0.8143,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1515,
"final": 4.1515,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2498,
"final": 1.2498,
"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.2,
"ER": 19,
"H": 43,
"BB": 11,
"SO": 45,
"HR": 7,
"ERA": 3.7445255474452557,
"WHIP": 1.1824817518248176,
"K9": 8.868613138686133,
"HR9": 1.3795620437956204,
"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.9142289301436859,
"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": 6.0,
"predicted_BB": 3.0,
"predicted_SO": 2.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": "664299",
"player_name": "Cristian Javier",
"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": 3.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 5.0,
"delta": 0.3333,
"percent_delta": 0.0714,
"direction": "boost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 5.0,
"delta": 0.3333,
"percent_delta": 0.0714,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 5.0,
"delta": 0.3333,
"percent_delta": 0.0714,
"direction": "boost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 5.0,
"delta": 0.3333,
"percent_delta": 0.0714,
"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": "HOU",
"games": 156,
"wins": 77,
"losses": 79,
"win_pct": 0.4936,
"runs_scored": 688.0,
"runs_allowed": 747.0,
"run_differential": -59.0,
"run_differential_per_game": -0.3782,
"avg_runs_scored": 4.4103,
"avg_runs_allowed": 4.7885,
"offense_index": 0.9844,
"defense_index": 0.9356,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 2.8,
"avg_runs_allowed": 4.6,
"run_differential": -18.0
},
"available": true,
"quality_score": -0.1219
},
"opponent": {
"team": "SEA",
"games": 156,
"wins": 73,
"losses": 83,
"win_pct": 0.4679,
"runs_scored": 634.0,
"runs_allowed": 690.0,
"run_differential": -56.0,
"run_differential_per_game": -0.359,
"avg_runs_scored": 4.0641,
"avg_runs_allowed": 4.4231,
"offense_index": 0.9071,
"defense_index": 1.0129,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 3.8,
"run_differential": 19.0
},
"available": true,
"quality_score": -0.0714
},
"edges": {
"quality_edge": -0.0505,
"offense_edge": -0.0156,
"opponent_offense_edge": -0.0929,
"defense_strength": -0.0644,
"opponent_defense_weakness": -0.0129,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9998,
"run_prevention": 0.9941,
"strikeout": 1.0059
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "664299",
"profile": {
"available": true,
"pitcher_id": "664299",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 243.0,
"k_percent": 21.3,
"bb_percent": 9.7,
"woba": 0.343,
"xwoba": 0.332,
"sweet_spot_percent": 40.1,
"barrel_batted_rate": 8.8,
"hard_hit_percent": 33.5,
"avg_best_speed": 79.3767,
"avg_hyper_speed": 93.7294,
"whiff_percent": 29.3,
"swing_percent": 51.9
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.4799,
"command_and_miss": 0.1464,
"regression_edge": 0.3143,
"xwoba_edge": -0.5929,
"barrel_edge": -0.3556,
"hard_hit_edge": 0.6286,
"whiff_edge": 0.6071,
"bb_edge": -0.1375,
"pitch_design_score": -0.0808
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "664299",
"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.4152422034201,
"release_spin_rate": 2322.226121767922,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.4152422034201,
"release_spin_rate": 2322.226121767922,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.4152,
"release_spin_rate": 2322.2261,
"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.0808,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.5769,
"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.1999,
"sample_weight": 0.972,
"run_prevention_factor": 1.017,
"strikeout_factor": 1.0203,
"walk_factor": 1.0107,
"homer_factor": 1.0205,
"woba_minus_xwoba": 0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "664299",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0165,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0165,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.0104,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0199,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0197,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 2,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 100,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -9 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 5",
"detail": "Actual minus predicted hits was -5."
},
{
"code": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 3 ER."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_HOU@SEA | home | Logan Gilbert | Logan Gilbert | True | 5.2 | 4.0 | -5 | 3 | 4 | 1 | 6/10 | 1/2 | 3/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.691011235955056,
"WHIP": 1.0617977528089888,
"IP": 178.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.933,
"recent_avg_IP": 5.533,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2422,
"sample_weight": 1.0,
"run_prevention_factor": 0.9794,
"strikeout_factor": 1.0614,
"walk_factor": 0.947,
"homer_factor": 1.0545,
"regression_flag": "neutral",
"k_percent": 27.2,
"bb_percent": 6.5,
"woba": 0.297,
"xwoba": 0.294,
"barrel_percent": 10.1,
"hard_hit_percent": 41.0,
"whiff_percent": 30.5
},
"espn_rank": {
"rank": 29,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "669302",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.2,
"ER": 17.0,
"R": 17.0,
"H": 28.0,
"BB": 9.0,
"SO": 37.0,
"HR": 8.0,
"BF": 119.0,
"Pitches": 484.0
},
"per_game": {
"IP": 5.2,
"ER": 3.4,
"R": 3.4,
"H": 5.6,
"BB": 1.8,
"SO": 7.4,
"HR": 1.6,
"BF": 23.8,
"Pitches": 96.8
},
"rates": {
"ERA": 5.5301,
"WHIP": 1.3373,
"ER_per_IP": 0.61446,
"H_per_IP": 1.01205,
"BB_per_IP": 0.3253,
"SO_per_IP": 1.33735,
"HR_per_IP": 0.28916
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 58.0,
"ER": 28.0,
"R": 28.0,
"H": 50.0,
"BB": 21.0,
"SO": 65.0,
"HR": 13.0,
"BF": 241.0,
"Pitches": 963.0
},
"per_game": {
"IP": 5.2,
"ER": 2.8,
"R": 2.8,
"H": 5.0,
"BB": 2.1,
"SO": 6.5,
"HR": 1.3,
"BF": 24.1,
"Pitches": 96.3
},
"rates": {
"ERA": 4.3448,
"WHIP": 1.2241,
"ER_per_IP": 0.48276,
"H_per_IP": 0.86207,
"BB_per_IP": 0.36207,
"SO_per_IP": 1.12069,
"HR_per_IP": 0.22414
}
},
"season": {
"games": 30,
"totals": {
"IP": 178.0,
"ER": 73.0,
"R": 73.0,
"H": 143.0,
"BB": 46.0,
"SO": 194.0,
"HR": 28.0,
"BF": 713.0,
"Pitches": 2841.0
},
"per_game": {
"IP": 6.0,
"ER": 2.4333,
"R": 2.4333,
"H": 4.7667,
"BB": 1.5333,
"SO": 6.4667,
"HR": 0.9333,
"BF": 23.7667,
"Pitches": 94.7
},
"rates": {
"ERA": 3.691,
"WHIP": 1.0618,
"ER_per_IP": 0.41011,
"H_per_IP": 0.80337,
"BB_per_IP": 0.25843,
"SO_per_IP": 1.08989,
"HR_per_IP": 0.1573
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 3.005,
"predicted_H": 5.305,
"predicted_BB": 1.901,
"predicted_SO": 6.713,
"predicted_HR": 1.299,
"predicted_ERA": 4.7248,
"predicted_WHIP": 1.2588
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 3.005,
"final": 3.0029,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.305,
"final": 5.5902,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.901,
"final": 1.5313,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 6.713,
"final": 4.7789,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 1.299,
"final": 1.5867,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.7248,
"final": 4.7248,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2588,
"final": 1.2588,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 58.0,
"ER": 28,
"H": 50,
"BB": 21,
"SO": 65,
"HR": 13,
"ERA": 4.344827586206897,
"WHIP": 1.2241379310344827,
"K9": 10.086206896551724,
"HR9": 2.0172413793103448,
"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-15T00:00:00"
},
"recent_form_boost": 0.9828043139846121,
"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": 6.0,
"predicted_BB": 1.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
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 3,
"predicted_H": 6,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669302",
"player_name": "Logan Gilbert",
"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": 3.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.6667,
"predicted_SO": 2.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 3.0,
"delta": -4.0,
"percent_delta": -0.5714,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 2,
"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": {
"metric": "predicted_SO",
"before": 7.0,
"after": 3.0,
"delta": -4.0,
"percent_delta": -0.5714,
"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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 2.0,
"after": 3.0,
"delta": 1.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SEA",
"games": 156,
"wins": 73,
"losses": 83,
"win_pct": 0.4679,
"runs_scored": 634.0,
"runs_allowed": 690.0,
"run_differential": -56.0,
"run_differential_per_game": -0.359,
"avg_runs_scored": 4.0641,
"avg_runs_allowed": 4.4231,
"offense_index": 0.9071,
"defense_index": 1.0129,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 3.8,
"run_differential": 19.0
},
"available": true,
"quality_score": -0.0714
},
"opponent": {
"team": "HOU",
"games": 156,
"wins": 77,
"losses": 79,
"win_pct": 0.4936,
"runs_scored": 688.0,
"runs_allowed": 747.0,
"run_differential": -59.0,
"run_differential_per_game": -0.3782,
"avg_runs_scored": 4.4103,
"avg_runs_allowed": 4.7885,
"offense_index": 0.9844,
"defense_index": 0.9356,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 2.8,
"avg_runs_allowed": 4.6,
"run_differential": -18.0
},
"available": true,
"quality_score": -0.1219
},
"edges": {
"quality_edge": 0.0505,
"offense_edge": -0.0929,
"opponent_offense_edge": -0.0156,
"defense_strength": 0.0129,
"opponent_defense_weakness": 0.0644,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.003,
"run_prevention": 0.9937,
"strikeout": 1.0028
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669302",
"profile": {
"available": true,
"pitcher_id": "669302",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 680.0,
"k_percent": 27.2,
"bb_percent": 6.5,
"woba": 0.297,
"xwoba": 0.294,
"sweet_spot_percent": 36.3,
"barrel_batted_rate": 10.1,
"hard_hit_percent": 41.0,
"avg_best_speed": 79.0526,
"avg_hyper_speed": 94.3205,
"whiff_percent": 30.5,
"swing_percent": 50.4
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.0723,
"command_and_miss": 0.7457,
"regression_edge": 0.0857,
"xwoba_edge": 0.4929,
"barrel_edge": -0.6444,
"hard_hit_edge": -0.4429,
"whiff_edge": 0.7786,
"bb_edge": 0.6625,
"pitch_design_score": -0.0096
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669302",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 97,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 89.68670804198848,
"release_spin_rate": 1934.7185998494679,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 89.68670804198848,
"release_spin_rate": 1934.7185998494679,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.6867,
"release_spin_rate": 1934.7186,
"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.0096,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0683,
"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.2422,
"sample_weight": 1.0,
"run_prevention_factor": 0.9794,
"strikeout_factor": 1.0614,
"walk_factor": 0.947,
"homer_factor": 1.0545,
"woba_minus_xwoba": 0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669302",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9794,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9794,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.947,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0545,
"adjusted": 1
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0614,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 25,
"Pitches": 93,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was +4."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_LAA@OAK | away | Yusei Kikuchi | Yusei Kikuchi | True | 5.0 | 5.1 | 1 | 4 | 2 | -2 | 5/7 | 2/1 | 6/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.023255813953488,
"WHIP": 1.5523255813953487,
"IP": 57.1,
"games_started": null,
"games_pitched": 12,
"role_avg_IP": 4.778,
"recent_avg_IP": 5.267,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3402,
"sample_weight": 0.944,
"run_prevention_factor": 1.0289,
"strikeout_factor": 1.0024,
"walk_factor": 1.0312,
"homer_factor": 1.0949,
"regression_flag": "neutral",
"k_percent": 22.3,
"bb_percent": 10.8,
"woba": 0.347,
"xwoba": 0.339,
"barrel_percent": 9.3,
"hard_hit_percent": 44.8,
"whiff_percent": 25.1
},
"espn_rank": {
"rank": 319,
"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": 12.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7059,
"prior_weight": 0.2941
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "579328",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 12,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.1,
"ER": 12.0,
"R": 13.0,
"H": 26.0,
"BB": 14.0,
"SO": 25.0,
"HR": 4.0,
"BF": 118.0,
"Pitches": 457.0
},
"per_game": {
"IP": 5.1,
"ER": 2.4,
"R": 2.6,
"H": 5.2,
"BB": 2.8,
"SO": 5.0,
"HR": 0.8,
"BF": 23.6,
"Pitches": 91.4
},
"rates": {
"ERA": 4.1013,
"WHIP": 1.519,
"ER_per_IP": 0.4557,
"H_per_IP": 0.98734,
"BB_per_IP": 0.53165,
"SO_per_IP": 0.94937,
"HR_per_IP": 0.1519
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.2,
"ER": 25.0,
"R": 26.0,
"H": 47.0,
"BB": 23.0,
"SO": 50.0,
"HR": 6.0,
"BF": 212.0,
"Pitches": 847.0
},
"per_game": {
"IP": 4.2,
"ER": 2.5,
"R": 2.6,
"H": 4.7,
"BB": 2.3,
"SO": 5.0,
"HR": 0.6,
"BF": 21.2,
"Pitches": 84.7
},
"rates": {
"ERA": 4.7203,
"WHIP": 1.4685,
"ER_per_IP": 0.52448,
"H_per_IP": 0.98601,
"BB_per_IP": 0.48252,
"SO_per_IP": 1.04895,
"HR_per_IP": 0.12587
}
},
"season": {
"games": 12,
"totals": {
"IP": 57.1,
"ER": 32.0,
"R": 33.0,
"H": 61.0,
"BB": 28.0,
"SO": 58.0,
"HR": 7.0,
"BF": 260.0,
"Pitches": 1024.0
},
"per_game": {
"IP": 4.2,
"ER": 2.6667,
"R": 2.75,
"H": 5.0833,
"BB": 2.3333,
"SO": 4.8333,
"HR": 0.5833,
"BF": 21.6667,
"Pitches": 85.3333
},
"rates": {
"ERA": 5.0233,
"WHIP": 1.5523,
"ER_per_IP": 0.55814,
"H_per_IP": 1.06395,
"BB_per_IP": 0.48837,
"SO_per_IP": 1.01163,
"HR_per_IP": 0.12209
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.504,
"predicted_H": 4.956,
"predicted_BB": 2.327,
"predicted_SO": 4.874,
"predicted_HR": 0.699,
"predicted_ERA": 4.5279,
"predicted_WHIP": 1.4634
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4743,
"form_weight": 0.5257,
"form_reliability": 0.7059,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7059,
"prior_weight": 0.2941
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.504,
"final": 3.2135,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.956,
"final": 4.9769,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.327,
"final": 2.1719,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.874,
"final": 5.408,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.699,
"final": 0.3675,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5279,
"final": 4.5279,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4634,
"final": 1.4634,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 47.2,
"ER": 25,
"H": 47,
"BB": 23,
"SO": 50,
"HR": 6,
"ERA": 4.720279720279721,
"WHIP": 1.4685314685314685,
"K9": 9.440559440559442,
"HR9": 1.132867132867133,
"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.0311525175052294,
"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": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 12.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7059,
"prior_weight": 0.2941
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "579328",
"player_name": "Yusei Kikuchi",
"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": 2.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 4.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAA",
"games": 156,
"wins": 60,
"losses": 96,
"win_pct": 0.3846,
"runs_scored": 625.0,
"runs_allowed": 712.0,
"run_differential": -87.0,
"run_differential_per_game": -0.5577,
"avg_runs_scored": 4.0064,
"avg_runs_allowed": 4.5641,
"offense_index": 0.8932,
"defense_index": 0.9827,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 4.8,
"run_differential": -14.0
},
"available": true,
"quality_score": -0.2015
},
"opponent": {
"team": "OAK",
"games": 156,
"wins": 61,
"losses": 95,
"win_pct": 0.391,
"runs_scored": 670.0,
"runs_allowed": 893.0,
"run_differential": -223.0,
"run_differential_per_game": -1.4295,
"avg_runs_scored": 4.2949,
"avg_runs_allowed": 5.7244,
"offense_index": 0.9575,
"defense_index": 0.7836,
"current_streak": "L6",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 6.5,
"run_differential": -34.0
},
"available": true,
"quality_score": -0.3379
},
"edges": {
"quality_edge": 0.1364,
"offense_edge": -0.1068,
"opponent_offense_edge": -0.0425,
"defense_strength": -0.0173,
"opponent_defense_weakness": 0.2164,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0066,
"run_prevention": 0.9881,
"strikeout": 1.0075
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "579328",
"profile": {
"available": true,
"pitcher_id": "579328",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 236.0,
"k_percent": 22.3,
"bb_percent": 10.8,
"woba": 0.347,
"xwoba": 0.339,
"sweet_spot_percent": 33.7,
"barrel_batted_rate": 9.3,
"hard_hit_percent": 44.8,
"avg_best_speed": 79.817,
"avg_hyper_speed": 95.4298,
"whiff_percent": 25.1,
"swing_percent": 48.3
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.6594,
"command_and_miss": -0.0543,
"regression_edge": 0.2286,
"xwoba_edge": -0.7929,
"barrel_edge": -0.4667,
"hard_hit_edge": -0.9857,
"whiff_edge": 0.0071,
"bb_edge": -0.4125,
"pitch_design_score": 0.002
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "579328",
"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": 89.89310008708637,
"release_spin_rate": 2218.1246452962064,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 89.89310008708637,
"release_spin_rate": 2218.1246452962064,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.8931,
"release_spin_rate": 2218.1246,
"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.002,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0143,
"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.3402,
"sample_weight": 0.944,
"run_prevention_factor": 1.0289,
"strikeout_factor": 1.0024,
"walk_factor": 1.0312,
"homer_factor": 1.0949,
"woba_minus_xwoba": 0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "579328",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0273,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0273,
"adjusted": 5
},
"predicted_BB": {
"original": 3.0,
"factor": 1.0295,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0896,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0023,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 86,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_LAA@OAK | home | Brady Basso | Brady Basso | True | 4.1 | 2.0 | -7 | 5 | 5 | 0 | 5/6 | 2/2 | 1/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.5,
"WHIP": 1.475,
"IP": 40.0,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 2.444,
"recent_avg_IP": 2.467,
"last_start_IP": 2.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0065,
"sample_weight": 0.64,
"run_prevention_factor": 0.9994,
"strikeout_factor": 0.9603,
"walk_factor": 0.9328,
"homer_factor": 0.9698,
"regression_flag": "positive_pitcher_regression",
"k_percent": 15.7,
"bb_percent": 3.9,
"woba": 0.349,
"xwoba": 0.304,
"barrel_percent": 5.6,
"hard_hit_percent": 35.7,
"whiff_percent": 20.4
},
"espn_rank": {
"rank": 263,
"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": 8.14,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6195,
"prior_weight": 0.3805
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669620",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 9.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 13.0,
"ER": 6.0,
"R": 6.0,
"H": 17.0,
"BB": 3.0,
"SO": 7.0,
"HR": 0.0,
"BF": 58.0,
"Pitches": 215.0
},
"per_game": {
"IP": 2.2,
"ER": 1.2,
"R": 1.2,
"H": 3.4,
"BB": 0.6,
"SO": 1.4,
"HR": 0.0,
"BF": 11.6,
"Pitches": 43.0
},
"rates": {
"ERA": 4.1538,
"WHIP": 1.5385,
"ER_per_IP": 0.46154,
"H_per_IP": 1.30769,
"BB_per_IP": 0.23077,
"SO_per_IP": 0.53846,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 21.0,
"ER": 10.0,
"R": 11.0,
"H": 27.0,
"BB": 4.0,
"SO": 12.0,
"HR": 1.0,
"BF": 93.0,
"Pitches": 326.0
},
"per_game": {
"IP": 2.0,
"ER": 1.0,
"R": 1.1,
"H": 2.7,
"BB": 0.4,
"SO": 1.2,
"HR": 0.1,
"BF": 9.3,
"Pitches": 32.6
},
"rates": {
"ERA": 4.2857,
"WHIP": 1.4762,
"ER_per_IP": 0.47619,
"H_per_IP": 1.28571,
"BB_per_IP": 0.19048,
"SO_per_IP": 0.57143,
"HR_per_IP": 0.04762
}
},
"season": {
"games": 24,
"totals": {
"IP": 40.0,
"ER": 20.0,
"R": 21.0,
"H": 52.0,
"BB": 7.0,
"SO": 28.0,
"HR": 3.0,
"BF": 178.0,
"Pitches": 625.0
},
"per_game": {
"IP": 1.2,
"ER": 0.8333,
"R": 0.875,
"H": 2.1667,
"BB": 0.2917,
"SO": 1.1667,
"HR": 0.125,
"BF": 7.4167,
"Pitches": 26.0417
},
"rates": {
"ERA": 4.5,
"WHIP": 1.475,
"ER_per_IP": 0.5,
"H_per_IP": 1.3,
"BB_per_IP": 0.175,
"SO_per_IP": 0.7,
"HR_per_IP": 0.075
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.346,
"predicted_H": 5.661,
"predicted_BB": 1.3,
"predicted_SO": 3.45,
"predicted_HR": 0.367,
"predicted_ERA": 4.3909,
"predicted_WHIP": 1.4478
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5108,
"form_weight": 0.4892,
"form_reliability": 0.6195,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.14,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6195,
"prior_weight": 0.3805
},
"applied_metrics": {
"predicted_IP": {
"model": 9.0,
"form": 4.2,
"final": 7.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 2.346,
"final": 3.7016,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.661,
"final": 5.3234,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.3,
"final": 1.6575,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 3.45,
"final": 2.1986,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.367,
"final": 1.2011,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.3909,
"final": 4.3909,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4478,
"final": 1.4478,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 21.0,
"ER": 10,
"H": 27,
"BB": 4,
"SO": 12,
"HR": 1,
"ERA": 4.285714285714286,
"WHIP": 1.4761904761904763,
"K9": 5.142857142857143,
"HR9": 0.42857142857142855,
"games_pitched": 10,
"quality_starts": 0,
"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": 0.9878125015624601,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 9.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 1.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.14,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6195,
"prior_weight": 0.3805
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 5,
"predicted_H": 5,
"predicted_BB": 2,
"predicted_SO": 1,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669620",
"player_name": "Brady Basso",
"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": 2.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 9.0,
"predicted_SO": 1.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 4.1,
"predicted_SO": 1.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 9.0,
"after": 4.1,
"delta": -4.9,
"percent_delta": -0.5444,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 9.0,
"after": 4.1,
"delta": -4.9,
"percent_delta": -0.5444,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 4.1,
"predicted_R": 5.0,
"predicted_SO": 1.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 4.1,
"after": 4.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 9.0,
"after": 4.1,
"delta": -4.9,
"percent_delta": -0.5444,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 9.0,
"after": 4.1,
"delta": -4.9,
"percent_delta": -0.5444,
"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": 156,
"wins": 61,
"losses": 95,
"win_pct": 0.391,
"runs_scored": 670.0,
"runs_allowed": 893.0,
"run_differential": -223.0,
"run_differential_per_game": -1.4295,
"avg_runs_scored": 4.2949,
"avg_runs_allowed": 5.7244,
"offense_index": 0.9575,
"defense_index": 0.7836,
"current_streak": "L6",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.1,
"avg_runs_allowed": 6.5,
"run_differential": -34.0
},
"available": true,
"quality_score": -0.3379
},
"opponent": {
"team": "LAA",
"games": 156,
"wins": 60,
"losses": 96,
"win_pct": 0.3846,
"runs_scored": 625.0,
"runs_allowed": 712.0,
"run_differential": -87.0,
"run_differential_per_game": -0.5577,
"avg_runs_scored": 4.0064,
"avg_runs_allowed": 4.5641,
"offense_index": 0.8932,
"defense_index": 0.9827,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 4.8,
"run_differential": -14.0
},
"available": true,
"quality_score": -0.2015
},
"edges": {
"quality_edge": -0.1364,
"offense_edge": -0.0425,
"opponent_offense_edge": -0.1068,
"defense_strength": -0.2164,
"opponent_defense_weakness": 0.0173,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9923,
"run_prevention": 1.0114,
"strikeout": 1.0045
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669620",
"profile": {
"available": true,
"pitcher_id": "669620",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 160.0,
"k_percent": 15.7,
"bb_percent": 3.9,
"woba": 0.349,
"xwoba": 0.304,
"sweet_spot_percent": 39.2,
"barrel_batted_rate": 5.6,
"hard_hit_percent": 35.7,
"avg_best_speed": 76.761,
"avg_hyper_speed": 93.9876,
"whiff_percent": 20.4,
"swing_percent": 52.5
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.0235,
"command_and_miss": -0.3686,
"regression_edge": 1.2857,
"xwoba_edge": 0.2071,
"barrel_edge": 0.3556,
"hard_hit_edge": 0.3143,
"whiff_edge": -0.6643,
"bb_edge": 1.3125,
"pitch_design_score": -0.1176
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669620",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 36,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 36,
"pitch_usage": 0.0,
"release_speed": 87.75756117154422,
"release_spin_rate": 2227.8675789733616,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 36,
"pitch_usage": 0.0,
"release_speed": 87.75756117154422,
"release_spin_rate": 2227.8675789733616,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.7576,
"release_spin_rate": 2227.8676,
"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.1176,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.84,
"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.0065,
"sample_weight": 0.64,
"run_prevention_factor": 0.9994,
"strikeout_factor": 0.9603,
"walk_factor": 0.9328,
"homer_factor": 0.9698,
"woba_minus_xwoba": 0.045,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "669620",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9996,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 0.9996,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.957,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9807,
"adjusted": 0
},
"predicted_SO": {
"original": 2.0,
"factor": 0.9746,
"adjusted": 2
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 5,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 2,
"predicted_SO": 1,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 21,
"Pitches": 78,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -7 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_MIA@CHC | away | Janson Junk | Janson Junk | True | 4.2 | 5.0 | 1 | 5 | 0 | -5 | 6/2 | 4/1 | 5/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.5,
"WHIP": 1.3421052631578947,
"IP": 114.0,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 4.913,
"recent_avg_IP": 4.067,
"last_start_IP": 3.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2872,
"sample_weight": 1.0,
"run_prevention_factor": 1.0244,
"strikeout_factor": 0.9094,
"walk_factor": 0.945,
"homer_factor": 1.0125,
"regression_flag": "neutral",
"k_percent": 16.0,
"bb_percent": 6.4,
"woba": 0.329,
"xwoba": 0.322,
"barrel_percent": 7.0,
"hard_hit_percent": 39.1,
"whiff_percent": 15.1
},
"espn_rank": {
"rank": 235,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "676083",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 16.2,
"ER": 11.0,
"R": 11.0,
"H": 20.0,
"BB": 5.0,
"SO": 10.0,
"HR": 2.0,
"BF": 73.0,
"Pitches": 280.0
},
"per_game": {
"IP": 3.1,
"ER": 2.2,
"R": 2.2,
"H": 4.0,
"BB": 1.0,
"SO": 2.0,
"HR": 0.4,
"BF": 14.6,
"Pitches": 56.0
},
"rates": {
"ERA": 5.94,
"WHIP": 1.5,
"ER_per_IP": 0.66,
"H_per_IP": 1.2,
"BB_per_IP": 0.3,
"SO_per_IP": 0.6,
"HR_per_IP": 0.12
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 40.1,
"ER": 17.0,
"R": 19.0,
"H": 42.0,
"BB": 11.0,
"SO": 21.0,
"HR": 3.0,
"BF": 171.0,
"Pitches": 644.0
},
"per_game": {
"IP": 4.0,
"ER": 1.7,
"R": 1.9,
"H": 4.2,
"BB": 1.1,
"SO": 2.1,
"HR": 0.3,
"BF": 17.1,
"Pitches": 64.4
},
"rates": {
"ERA": 3.7934,
"WHIP": 1.314,
"ER_per_IP": 0.42149,
"H_per_IP": 1.04132,
"BB_per_IP": 0.27273,
"SO_per_IP": 0.52066,
"HR_per_IP": 0.07438
}
},
"season": {
"games": 24,
"totals": {
"IP": 114.0,
"ER": 57.0,
"R": 62.0,
"H": 122.0,
"BB": 31.0,
"SO": 78.0,
"HR": 14.0,
"BF": 487.0,
"Pitches": 1833.0
},
"per_game": {
"IP": 4.2,
"ER": 2.375,
"R": 2.5833,
"H": 5.0833,
"BB": 1.2917,
"SO": 3.25,
"HR": 0.5833,
"BF": 20.2917,
"Pitches": 76.375
},
"rates": {
"ERA": 4.5,
"WHIP": 1.3421,
"ER_per_IP": 0.5,
"H_per_IP": 1.07018,
"BB_per_IP": 0.27193,
"SO_per_IP": 0.68421,
"HR_per_IP": 0.12281
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.0,
"predicted_ER": 2.142,
"predicted_H": 4.354,
"predicted_BB": 1.195,
"predicted_SO": 2.582,
"predicted_HR": 0.446,
"predicted_ERA": 4.847,
"predicted_WHIP": 1.3952
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4228,
"form_weight": 0.5772,
"form_reliability": 0.8276,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.0,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 2.142,
"final": 3.3505,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.354,
"final": 5.05,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.195,
"final": 2.3811,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 2.582,
"final": 3.6044,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.446,
"final": 0.2574,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.847,
"final": 4.847,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3952,
"final": 1.3952,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 40.1,
"ER": 17,
"H": 42,
"BB": 11,
"SO": 21,
"HR": 3,
"ERA": 3.7933884297520657,
"WHIP": 1.3140495867768593,
"K9": 4.68595041322314,
"HR9": 0.6694214876033058,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.923015200277003,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_BB": 4.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "676083",
"player_name": "Janson Junk",
"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": 4.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 4.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 5.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.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": "MIA",
"games": 156,
"wins": 76,
"losses": 80,
"win_pct": 0.4872,
"runs_scored": 692.0,
"runs_allowed": 695.0,
"run_differential": -3.0,
"run_differential_per_game": -0.0192,
"avg_runs_scored": 4.4359,
"avg_runs_allowed": 4.4551,
"offense_index": 0.9906,
"defense_index": 1.0051,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 6.3,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.0482
},
"opponent": {
"team": "CHC",
"games": 156,
"wins": 87,
"losses": 69,
"win_pct": 0.5577,
"runs_scored": 835.0,
"runs_allowed": 683.0,
"run_differential": 152.0,
"run_differential_per_game": 0.9744,
"avg_runs_scored": 5.3526,
"avg_runs_allowed": 4.3782,
"offense_index": 1.1954,
"defense_index": 1.0228,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 6.1,
"avg_runs_allowed": 3.9,
"run_differential": 22.0
},
"available": true,
"quality_score": 0.2037
},
"edges": {
"quality_edge": -0.2519,
"offense_edge": -0.0094,
"opponent_offense_edge": 0.1954,
"defense_strength": 0.0051,
"opponent_defense_weakness": -0.0228,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9823,
"run_prevention": 1.0433,
"strikeout": 0.9768
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "676083",
"profile": {
"available": true,
"pitcher_id": "676083",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 448.0,
"k_percent": 16.0,
"bb_percent": 6.4,
"woba": 0.329,
"xwoba": 0.322,
"sweet_spot_percent": 30.3,
"barrel_batted_rate": 7.0,
"hard_hit_percent": 39.1,
"avg_best_speed": 79.3958,
"avg_hyper_speed": 94.4423,
"whiff_percent": 15.1,
"swing_percent": 48.4
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.1905,
"command_and_miss": -0.7393,
"regression_edge": 0.2,
"xwoba_edge": -0.3071,
"barrel_edge": 0.0444,
"hard_hit_edge": -0.1714,
"whiff_edge": -1.4214,
"bb_edge": 0.6875,
"pitch_design_score": -0.1045
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "676083",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 55,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 55,
"pitch_usage": 0.0,
"release_speed": 87.99217715516329,
"release_spin_rate": 2229.370088419328,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 55,
"pitch_usage": 0.0,
"release_speed": 87.99217715516329,
"release_spin_rate": 2229.370088419328,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.9922,
"release_spin_rate": 2229.3701,
"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.1045,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.7461,
"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.2872,
"sample_weight": 1.0,
"run_prevention_factor": 1.0244,
"strikeout_factor": 0.9094,
"walk_factor": 0.945,
"homer_factor": 1.0125,
"woba_minus_xwoba": 0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "676083",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0244,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0244,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.945,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0125,
"adjusted": 1
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9094,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 6,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 4,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"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": "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": "MISSED_SHUTDOWN",
"severity": "error",
"title": "Model missed a shutdown outing",
"detail": "The pitcher allowed zero earned runs after a projection of 5 ER."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_MIA@CHC | home | Shota Imanaga | Shota Imanaga | True | 5.1 | 5.0 | -1 | 3 | 1 | -2 | 6/4 | 1/0 | 5/7 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.796039603960396,
"WHIP": 1.1049504950495048,
"IP": 168.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.611,
"recent_avg_IP": 5.0,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1972,
"sample_weight": 1.0,
"run_prevention_factor": 0.9832,
"strikeout_factor": 1.0391,
"walk_factor": 0.925,
"homer_factor": 1.0265,
"regression_flag": "neutral",
"k_percent": 24.0,
"bb_percent": 5.4,
"woba": 0.31,
"xwoba": 0.301,
"barrel_percent": 9.7,
"hard_hit_percent": 36.3,
"whiff_percent": 29.8
},
"espn_rank": {
"rank": 93,
"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": "684007",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.0,
"ER": 11.0,
"R": 12.0,
"H": 25.0,
"BB": 5.0,
"SO": 24.0,
"HR": 5.0,
"BF": 105.0,
"Pitches": 451.0
},
"per_game": {
"IP": 5.0,
"ER": 2.2,
"R": 2.4,
"H": 5.0,
"BB": 1.0,
"SO": 4.8,
"HR": 1.0,
"BF": 21.0,
"Pitches": 90.2
},
"rates": {
"ERA": 3.96,
"WHIP": 1.2,
"ER_per_IP": 0.44,
"H_per_IP": 1.0,
"BB_per_IP": 0.2,
"SO_per_IP": 0.96,
"HR_per_IP": 0.2
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.1,
"ER": 21.0,
"R": 22.0,
"H": 49.0,
"BB": 9.0,
"SO": 55.0,
"HR": 12.0,
"BF": 219.0,
"Pitches": 907.0
},
"per_game": {
"IP": 5.1,
"ER": 2.1,
"R": 2.2,
"H": 4.9,
"BB": 0.9,
"SO": 5.5,
"HR": 1.2,
"BF": 21.9,
"Pitches": 90.7
},
"rates": {
"ERA": 3.5437,
"WHIP": 1.0875,
"ER_per_IP": 0.39375,
"H_per_IP": 0.91875,
"BB_per_IP": 0.16875,
"SO_per_IP": 1.03125,
"HR_per_IP": 0.225
}
},
"season": {
"games": 30,
"totals": {
"IP": 168.1,
"ER": 71.0,
"R": 73.0,
"H": 149.0,
"BB": 37.0,
"SO": 164.0,
"HR": 34.0,
"BF": 683.0,
"Pitches": 2707.0
},
"per_game": {
"IP": 5.2,
"ER": 2.3667,
"R": 2.4333,
"H": 4.9667,
"BB": 1.2333,
"SO": 5.4667,
"HR": 1.1333,
"BF": 22.7667,
"Pitches": 90.2333
},
"rates": {
"ERA": 3.796,
"WHIP": 1.105,
"ER_per_IP": 0.42178,
"H_per_IP": 0.88515,
"BB_per_IP": 0.2198,
"SO_per_IP": 0.97426,
"HR_per_IP": 0.20198
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.278,
"predicted_H": 5.015,
"predicted_BB": 1.153,
"predicted_SO": 5.16,
"predicted_HR": 1.055,
"predicted_ERA": 3.8969,
"predicted_WHIP": 1.1723
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4104,
"form_weight": 0.5896,
"form_reliability": 0.8571,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.278,
"final": 2.9847,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 5.015,
"final": 5.4192,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.153,
"final": 1.0902,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 5.16,
"final": 4.2736,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 3.0,
"form": 1.055,
"final": 1.8532,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.8969,
"final": 3.8969,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1723,
"final": 1.1723,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 53.1,
"ER": 21,
"H": 49,
"BB": 9,
"SO": 55,
"HR": 12,
"ERA": 3.5437499999999997,
"WHIP": 1.0875,
"K9": 9.28125,
"HR9": 2.025,
"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-16T00:00:00"
},
"recent_form_boost": 0.8892671372604741,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 3.0,
"predicted_HR": 3.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.1,
"predicted_ER": 3,
"predicted_H": 6,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "684007",
"player_name": "Shota Imanaga",
"position": "Starter",
"team": "CHC",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 3.0,
"predicted_IP": 5.3333,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 5.1,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 3.0,
"after": 1.0,
"delta": -2.0,
"percent_delta": -0.6667,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 4,
"boosted_metrics": 1,
"deboosted_metrics": 3,
"better_metrics": 3,
"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_HR",
"before": 3.0,
"after": 1.0,
"delta": -2.0,
"percent_delta": -0.6667,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.1,
"predicted_R": 3.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.1,
"after": 5.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_HR",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 3.0,
"after": 2.0,
"delta": -1.0,
"percent_delta": -0.3333,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 4,
"boosted_metrics": 1,
"deboosted_metrics": 3,
"better_metrics": 3,
"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_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": "CHC",
"games": 156,
"wins": 87,
"losses": 69,
"win_pct": 0.5577,
"runs_scored": 835.0,
"runs_allowed": 683.0,
"run_differential": 152.0,
"run_differential_per_game": 0.9744,
"avg_runs_scored": 5.3526,
"avg_runs_allowed": 4.3782,
"offense_index": 1.1954,
"defense_index": 1.0228,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 6.1,
"avg_runs_allowed": 3.9,
"run_differential": 22.0
},
"available": true,
"quality_score": 0.2037
},
"opponent": {
"team": "MIA",
"games": 156,
"wins": 76,
"losses": 80,
"win_pct": 0.4872,
"runs_scored": 692.0,
"runs_allowed": 695.0,
"run_differential": -3.0,
"run_differential_per_game": -0.0192,
"avg_runs_scored": 4.4359,
"avg_runs_allowed": 4.4551,
"offense_index": 0.9906,
"defense_index": 1.0051,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 6.3,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.0482
},
"edges": {
"quality_edge": 0.2519,
"offense_edge": 0.1954,
"opponent_offense_edge": -0.0094,
"defense_strength": 0.0228,
"opponent_defense_weakness": -0.0051,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0111,
"run_prevention": 0.9836,
"strikeout": 1.0083
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "684007",
"profile": {
"available": true,
"pitcher_id": "684007",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 660.0,
"k_percent": 24.0,
"bb_percent": 5.4,
"woba": 0.31,
"xwoba": 0.301,
"sweet_spot_percent": 33.4,
"barrel_batted_rate": 9.7,
"hard_hit_percent": 36.3,
"avg_best_speed": 77.5993,
"avg_hyper_speed": 93.7546,
"whiff_percent": 29.8,
"swing_percent": 51.6
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.074,
"command_and_miss": 0.56,
"regression_edge": 0.2571,
"xwoba_edge": 0.2929,
"barrel_edge": -0.5556,
"hard_hit_edge": 0.2286,
"whiff_edge": 0.6786,
"bb_edge": 0.9375,
"pitch_design_score": -0.1949
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "684007",
"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": 86.37721205669526,
"release_spin_rate": 2035.0429365724972,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 86.37721205669526,
"release_spin_rate": 2035.0429365724972,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.3772,
"release_spin_rate": 2035.0429,
"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.1949,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.3921,
"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.1972,
"sample_weight": 1.0,
"run_prevention_factor": 0.9832,
"strikeout_factor": 1.0391,
"walk_factor": 0.925,
"homer_factor": 1.0265,
"woba_minus_xwoba": 0.009,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "684007",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9832,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9832,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.925,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0265,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0391,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 5,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 23,
"Pitches": 89,
"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/20260922_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"
}
} |
| 20260922 | 20260922_MIL@PHI | away | Dustin May | Dustin May | True | 4.2 | 2.0 | -8 | 2 | 2 | 0 | 2/1 | 2/2 | 4/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.606635071090047,
"WHIP": 1.3151658767772512,
"IP": 140.2,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 4.851,
"recent_avg_IP": 3.333,
"last_start_IP": 2.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1546,
"sample_weight": 1.0,
"run_prevention_factor": 1.0131,
"strikeout_factor": 0.9951,
"walk_factor": 0.973,
"homer_factor": 1.0505,
"regression_flag": "neutral",
"k_percent": 22.9,
"bb_percent": 7.8,
"woba": 0.315,
"xwoba": 0.322,
"barrel_percent": 7.5,
"hard_hit_percent": 44.2,
"whiff_percent": 23.2
},
"espn_rank": {
"rank": 278,
"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": "669160",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 16.2,
"ER": 9.0,
"R": 9.0,
"H": 19.0,
"BB": 5.0,
"SO": 19.0,
"HR": 3.0,
"BF": 76.0,
"Pitches": 308.0
},
"per_game": {
"IP": 3.1,
"ER": 1.8,
"R": 1.8,
"H": 3.8,
"BB": 1.0,
"SO": 3.8,
"HR": 0.6,
"BF": 15.2,
"Pitches": 61.6
},
"rates": {
"ERA": 4.86,
"WHIP": 1.44,
"ER_per_IP": 0.54,
"H_per_IP": 1.14,
"BB_per_IP": 0.3,
"SO_per_IP": 1.14,
"HR_per_IP": 0.18
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 42.2,
"ER": 20.0,
"R": 20.0,
"H": 41.0,
"BB": 15.0,
"SO": 42.0,
"HR": 5.0,
"BF": 185.0,
"Pitches": 713.0
},
"per_game": {
"IP": 4.1,
"ER": 2.0,
"R": 2.0,
"H": 4.1,
"BB": 1.5,
"SO": 4.2,
"HR": 0.5,
"BF": 18.5,
"Pitches": 71.3
},
"rates": {
"ERA": 4.2188,
"WHIP": 1.3125,
"ER_per_IP": 0.46875,
"H_per_IP": 0.96094,
"BB_per_IP": 0.35156,
"SO_per_IP": 0.98438,
"HR_per_IP": 0.11719
}
},
"season": {
"games": 29,
"totals": {
"IP": 140.2,
"ER": 72.0,
"R": 75.0,
"H": 138.0,
"BB": 47.0,
"SO": 137.0,
"HR": 12.0,
"BF": 599.0,
"Pitches": 2305.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4828,
"R": 2.5862,
"H": 4.7586,
"BB": 1.6207,
"SO": 4.7241,
"HR": 0.4138,
"BF": 20.6552,
"Pitches": 79.4828
},
"rates": {
"ERA": 4.6066,
"WHIP": 1.3152,
"ER_per_IP": 0.51185,
"H_per_IP": 0.98104,
"BB_per_IP": 0.33412,
"SO_per_IP": 0.97393,
"HR_per_IP": 0.08531
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.0,
"predicted_ER": 2.095,
"predicted_H": 4.26,
"predicted_BB": 1.367,
"predicted_SO": 4.258,
"predicted_HR": 0.578,
"predicted_ERA": 4.5855,
"predicted_WHIP": 1.3684
}
},
"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": 4.2,
"form": 4.0,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.095,
"final": 2.0558,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.26,
"final": 3.3285,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.367,
"final": 1.6279,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.258,
"final": 4.1517,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.578,
"final": 0.3398,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5855,
"final": 4.5855,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3684,
"final": 1.3684,
"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": 42.2,
"ER": 20,
"H": 41,
"BB": 15,
"SO": 42,
"HR": 5,
"ERA": 4.218749999999999,
"WHIP": 1.3124999999999998,
"K9": 8.859374999999998,
"HR9": 1.0546874999999998,
"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-18T00:00:00"
},
"recent_form_boost": 0.9708296372604741,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 2.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669160",
"player_name": "Dustin May",
"position": "Starter",
"team": "MIL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 2.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"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.2,
"delta": -0.4667,
"percent_delta": -0.1,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"percent_delta": -0.1,
"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.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": "MIL",
"games": 156,
"wins": 98,
"losses": 58,
"win_pct": 0.6282,
"runs_scored": 802.0,
"runs_allowed": 600.0,
"run_differential": 202.0,
"run_differential_per_game": 1.2949,
"avg_runs_scored": 5.141,
"avg_runs_allowed": 3.8462,
"offense_index": 1.1449,
"defense_index": 1.1675,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.8,
"avg_runs_allowed": 3.6,
"run_differential": 32.0
},
"available": true,
"quality_score": 0.3726
},
"opponent": {
"team": "PHI",
"games": 156,
"wins": 86,
"losses": 70,
"win_pct": 0.5513,
"runs_scored": 697.0,
"runs_allowed": 668.0,
"run_differential": 29.0,
"run_differential_per_game": 0.1859,
"avg_runs_scored": 4.4679,
"avg_runs_allowed": 4.2821,
"offense_index": 0.995,
"defense_index": 1.0487,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 4.8,
"run_differential": -9.0
},
"available": true,
"quality_score": 0.0314
},
"edges": {
"quality_edge": 0.3412,
"offense_edge": 0.1449,
"opponent_offense_edge": -0.005,
"defense_strength": 0.1675,
"opponent_defense_weakness": -0.0487,
"recent_win_pct_edge": 0.4
},
"player_factors": {
"ip": 1.0189,
"run_prevention": 0.9654,
"strikeout": 1.0106
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669160",
"profile": {
"available": true,
"pitcher_id": "669160",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 581.0,
"k_percent": 22.9,
"bb_percent": 7.8,
"woba": 0.315,
"xwoba": 0.322,
"sweet_spot_percent": 36.5,
"barrel_batted_rate": 7.5,
"hard_hit_percent": 44.2,
"avg_best_speed": 79.1537,
"avg_hyper_speed": 94.6072,
"whiff_percent": 23.2,
"swing_percent": 47.8
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.2811,
"command_and_miss": 0.0393,
"regression_edge": -0.2,
"xwoba_edge": -0.3071,
"barrel_edge": -0.0667,
"hard_hit_edge": -0.9,
"whiff_edge": -0.2643,
"bb_edge": 0.3375,
"pitch_design_score": 0.1573
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669160",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 60,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 60,
"pitch_usage": 0.0,
"release_speed": 92.66624874445156,
"release_spin_rate": 2536.673286155761,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 60,
"pitch_usage": 0.0,
"release_speed": 92.66624874445156,
"release_spin_rate": 2536.673286155761,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.6662,
"release_spin_rate": 2536.6733,
"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.1573,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1235,
"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.1546,
"sample_weight": 1.0,
"run_prevention_factor": 1.0131,
"strikeout_factor": 0.9951,
"walk_factor": 0.973,
"homer_factor": 1.0505,
"woba_minus_xwoba": -0.007,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669160",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0131,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0131,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.973,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0505,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9951,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 19,
"Pitches": 85,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -8 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_MIL@PHI | home | Zack Wheeler | Zack Wheeler | True | 6.0 | 5.2 | -1 | 2 | 3 | 1 | 5/5 | 3/1 | 7/11 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.9933481152993346,
"WHIP": 1.057649667405765,
"IP": 150.1,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 5.782,
"recent_avg_IP": 6.0,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.7042,
"sample_weight": 1.0,
"run_prevention_factor": 0.9401,
"strikeout_factor": 1.0769,
"walk_factor": 0.971,
"homer_factor": 0.9314,
"regression_flag": "neutral",
"k_percent": 29.5,
"bb_percent": 7.7,
"woba": 0.28,
"xwoba": 0.268,
"barrel_percent": 6.2,
"hard_hit_percent": 35.5,
"whiff_percent": 30.9
},
"espn_rank": {
"rank": 8,
"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": "554430",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 11.0,
"R": 11.0,
"H": 25.0,
"BB": 13.0,
"SO": 33.0,
"HR": 5.0,
"BF": 125.0,
"Pitches": 507.0
},
"per_game": {
"IP": 6.0,
"ER": 2.2,
"R": 2.2,
"H": 5.0,
"BB": 2.6,
"SO": 6.6,
"HR": 1.0,
"BF": 25.0,
"Pitches": 101.4
},
"rates": {
"ERA": 3.3,
"WHIP": 1.2667,
"ER_per_IP": 0.36667,
"H_per_IP": 0.83333,
"BB_per_IP": 0.43333,
"SO_per_IP": 1.1,
"HR_per_IP": 0.16667
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.1,
"ER": 26.0,
"R": 27.0,
"H": 47.0,
"BB": 24.0,
"SO": 60.0,
"HR": 9.0,
"BF": 219.0,
"Pitches": 905.0
},
"per_game": {
"IP": 5.0,
"ER": 2.6,
"R": 2.7,
"H": 4.7,
"BB": 2.4,
"SO": 6.0,
"HR": 0.9,
"BF": 21.9,
"Pitches": 90.5
},
"rates": {
"ERA": 4.649,
"WHIP": 1.4106,
"ER_per_IP": 0.51656,
"H_per_IP": 0.93377,
"BB_per_IP": 0.47682,
"SO_per_IP": 1.19205,
"HR_per_IP": 0.17881
}
},
"season": {
"games": 26,
"totals": {
"IP": 150.1,
"ER": 50.0,
"R": 51.0,
"H": 113.0,
"BB": 46.0,
"SO": 177.0,
"HR": 20.0,
"BF": 599.0,
"Pitches": 2451.0
},
"per_game": {
"IP": 5.2,
"ER": 1.9231,
"R": 1.9615,
"H": 4.3462,
"BB": 1.7692,
"SO": 6.8077,
"HR": 0.7692,
"BF": 23.0385,
"Pitches": 94.2692
},
"rates": {
"ERA": 2.9933,
"WHIP": 1.0576,
"ER_per_IP": 0.33259,
"H_per_IP": 0.75166,
"BB_per_IP": 0.30599,
"SO_per_IP": 1.17738,
"HR_per_IP": 0.13304
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.419,
"predicted_H": 4.932,
"predicted_BB": 2.348,
"predicted_SO": 6.294,
"predicted_HR": 0.914,
"predicted_ERA": 3.8525,
"predicted_WHIP": 1.2883
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4181,
"form_weight": 0.5819,
"form_reliability": 0.8387,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
},
"applied_metrics": {
"predicted_IP": {
"model": 6.0,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 2.419,
"final": 3.4982,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.932,
"final": 4.9604,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.348,
"final": 2.6206,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 6.294,
"final": 6.5892,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.914,
"final": 0.5318,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.8525,
"final": 3.8525,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2883,
"final": 1.2883,
"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": 26,
"H": 47,
"BB": 24,
"SO": 60,
"HR": 9,
"ERA": 4.6490066225165565,
"WHIP": 1.4105960264900663,
"K9": 10.728476821192054,
"HR9": 1.6092715231788082,
"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-16T00:00:00"
},
"recent_form_boost": 1.0216859079558385,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_BB": 3.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 26.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8387,
"prior_weight": 0.1613
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3,
"predicted_H": 5,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "554430",
"player_name": "Zack Wheeler",
"position": "Starter",
"team": "PHI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 3.0,
"delta": -2.0,
"percent_delta": -0.4,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 5.0,
"after": 3.0,
"delta": -2.0,
"percent_delta": -0.4,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 3.0,
"delta": -2.0,
"percent_delta": -0.4,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 5.0,
"after": 3.0,
"delta": -2.0,
"percent_delta": -0.4,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PHI",
"games": 156,
"wins": 86,
"losses": 70,
"win_pct": 0.5513,
"runs_scored": 697.0,
"runs_allowed": 668.0,
"run_differential": 29.0,
"run_differential_per_game": 0.1859,
"avg_runs_scored": 4.4679,
"avg_runs_allowed": 4.2821,
"offense_index": 0.995,
"defense_index": 1.0487,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 4.8,
"run_differential": -9.0
},
"available": true,
"quality_score": 0.0314
},
"opponent": {
"team": "MIL",
"games": 156,
"wins": 98,
"losses": 58,
"win_pct": 0.6282,
"runs_scored": 802.0,
"runs_allowed": 600.0,
"run_differential": 202.0,
"run_differential_per_game": 1.2949,
"avg_runs_scored": 5.141,
"avg_runs_allowed": 3.8462,
"offense_index": 1.1449,
"defense_index": 1.1675,
"current_streak": "W3",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.8,
"avg_runs_allowed": 3.6,
"run_differential": 32.0
},
"available": true,
"quality_score": 0.3726
},
"edges": {
"quality_edge": -0.3412,
"offense_edge": -0.005,
"opponent_offense_edge": 0.1449,
"defense_strength": 0.0487,
"opponent_defense_weakness": -0.1675,
"recent_win_pct_edge": -0.4
},
"player_factors": {
"ip": 0.982,
"run_prevention": 1.0354,
"strikeout": 0.9782
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "554430",
"profile": {
"available": true,
"pitcher_id": "554430",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 573.0,
"k_percent": 29.5,
"bb_percent": 7.7,
"woba": 0.28,
"xwoba": 0.268,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 6.2,
"hard_hit_percent": 35.5,
"avg_best_speed": 74.3749,
"avg_hyper_speed": 93.4483,
"whiff_percent": 30.9,
"swing_percent": 49.7
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.7977,
"command_and_miss": 0.8536,
"regression_edge": 0.3429,
"xwoba_edge": 1.2357,
"barrel_edge": 0.2222,
"hard_hit_edge": 0.3429,
"whiff_edge": 0.8357,
"bb_edge": 0.3625,
"pitch_design_score": 0.0159
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "554430",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 102,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 102,
"pitch_usage": 0.0,
"release_speed": 90.1409528401879,
"release_spin_rate": 2371.990133014401,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 102,
"pitch_usage": 0.0,
"release_speed": 90.1409528401879,
"release_spin_rate": 2371.990133014401,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.141,
"release_spin_rate": 2371.9901,
"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.0159,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.1134,
"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.7042,
"sample_weight": 1.0,
"run_prevention_factor": 0.9401,
"strikeout_factor": 1.0769,
"walk_factor": 0.971,
"homer_factor": 0.9314,
"woba_minus_xwoba": 0.012,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "554430",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9401,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9401,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.971,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9314,
"adjusted": 1
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0769,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 26,
"Pitches": 103,
"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/20260922_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"
}
} |
| 20260922 | 20260922_MIN@SF | away | Taj Bradley | Taj Bradley | True | 6.0 | 6.0 | 0 | 3 | 1 | -2 | 2/3 | 3/3 | 6/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.8123791102514506,
"WHIP": 1.230174081237911,
"IP": 172.1,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.744,
"recent_avg_IP": 6.333,
"last_start_IP": 7.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0003,
"sample_weight": 1.0,
"run_prevention_factor": 1.0,
"strikeout_factor": 1.046,
"walk_factor": 1.019,
"homer_factor": 1.0766,
"regression_flag": "neutral",
"k_percent": 27.5,
"bb_percent": 10.1,
"woba": 0.297,
"xwoba": 0.307,
"barrel_percent": 9.4,
"hard_hit_percent": 45.1,
"whiff_percent": 27.5
},
"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": 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": "671737",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 31.2,
"ER": 12.0,
"R": 12.0,
"H": 21.0,
"BB": 11.0,
"SO": 41.0,
"HR": 4.0,
"BF": 125.0,
"Pitches": 475.0
},
"per_game": {
"IP": 6.1,
"ER": 2.4,
"R": 2.4,
"H": 4.2,
"BB": 2.2,
"SO": 8.2,
"HR": 0.8,
"BF": 25.0,
"Pitches": 95.0
},
"rates": {
"ERA": 3.4105,
"WHIP": 1.0105,
"ER_per_IP": 0.37895,
"H_per_IP": 0.66316,
"BB_per_IP": 0.34737,
"SO_per_IP": 1.29474,
"HR_per_IP": 0.12632
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 57.2,
"ER": 26.0,
"R": 26.0,
"H": 45.0,
"BB": 27.0,
"SO": 70.0,
"HR": 6.0,
"BF": 243.0,
"Pitches": 945.0
},
"per_game": {
"IP": 5.2,
"ER": 2.6,
"R": 2.6,
"H": 4.5,
"BB": 2.7,
"SO": 7.0,
"HR": 0.6,
"BF": 24.3,
"Pitches": 94.5
},
"rates": {
"ERA": 4.0578,
"WHIP": 1.2486,
"ER_per_IP": 0.45087,
"H_per_IP": 0.78035,
"BB_per_IP": 0.46821,
"SO_per_IP": 1.21387,
"HR_per_IP": 0.10405
}
},
"season": {
"games": 30,
"totals": {
"IP": 172.1,
"ER": 73.0,
"R": 73.0,
"H": 139.0,
"BB": 73.0,
"SO": 199.0,
"HR": 23.0,
"BF": 724.0,
"Pitches": 2893.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4333,
"R": 2.4333,
"H": 4.6333,
"BB": 2.4333,
"SO": 6.6333,
"HR": 0.7667,
"BF": 24.1333,
"Pitches": 96.4333
},
"rates": {
"ERA": 3.8124,
"WHIP": 1.2302,
"ER_per_IP": 0.4236,
"H_per_IP": 0.80658,
"BB_per_IP": 0.4236,
"SO_per_IP": 1.15474,
"HR_per_IP": 0.13346
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.549,
"predicted_H": 4.588,
"predicted_BB": 2.393,
"predicted_SO": 7.139,
"predicted_HR": 0.741,
"predicted_ERA": 3.842,
"predicted_WHIP": 1.169
}
},
"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": 3.0,
"form": 2.549,
"final": 2.7341,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.588,
"final": 3.5259,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.393,
"final": 2.6421,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 7.139,
"final": 6.6716,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.741,
"final": 0.8473,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.842,
"final": 3.842,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.169,
"final": 1.169,
"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.2,
"ER": 26,
"H": 45,
"BB": 27,
"SO": 70,
"HR": 6,
"ERA": 4.057803468208093,
"WHIP": 1.2485549132947975,
"K9": 10.92485549132948,
"HR9": 0.9364161849710982,
"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-17T00:00:00"
},
"recent_form_boost": 0.9511245252662546,
"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": 3.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "671737",
"player_name": "Taj Bradley",
"position": "Starter",
"team": "MIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 2.0,
"predicted_HR": 1.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIN",
"games": 157,
"wins": 73,
"losses": 84,
"win_pct": 0.465,
"runs_scored": 714.0,
"runs_allowed": 781.0,
"run_differential": -67.0,
"run_differential_per_game": -0.4268,
"avg_runs_scored": 4.5478,
"avg_runs_allowed": 4.9745,
"offense_index": 1.0139,
"defense_index": 0.9017,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 4.8,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.1171
},
"opponent": {
"team": "SF",
"games": 157,
"wins": 65,
"losses": 92,
"win_pct": 0.414,
"runs_scored": 661.0,
"runs_allowed": 742.0,
"run_differential": -81.0,
"run_differential_per_game": -0.5159,
"avg_runs_scored": 4.2102,
"avg_runs_allowed": 4.7261,
"offense_index": 0.9387,
"defense_index": 0.9491,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 5.3,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.2064
},
"edges": {
"quality_edge": 0.0893,
"offense_edge": 0.0139,
"opponent_offense_edge": -0.0613,
"defense_strength": -0.0983,
"opponent_defense_weakness": 0.0509,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0031,
"run_prevention": 0.9956,
"strikeout": 1.0076
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "671737",
"profile": {
"available": true,
"pitcher_id": "671737",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 696.0,
"k_percent": 27.5,
"bb_percent": 10.1,
"woba": 0.297,
"xwoba": 0.307,
"sweet_spot_percent": 39.5,
"barrel_batted_rate": 9.4,
"hard_hit_percent": 45.1,
"avg_best_speed": 80.6995,
"avg_hyper_speed": 94.9365,
"whiff_percent": 27.5,
"swing_percent": 47.3
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.1761,
"command_and_miss": 0.435,
"regression_edge": -0.2857,
"xwoba_edge": 0.1214,
"barrel_edge": -0.4889,
"hard_hit_edge": -1.0286,
"whiff_edge": 0.35,
"bb_edge": -0.2375,
"pitch_design_score": 0.1731
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "671737",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 93,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 92.94823908729474,
"release_spin_rate": 2181.9905294160544,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 92.94823908729474,
"release_spin_rate": 2181.9905294160544,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.9482,
"release_spin_rate": 2181.9905,
"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.1731,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.2363,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": -0.0003,
"sample_weight": 1.0,
"run_prevention_factor": 1.0,
"strikeout_factor": 1.046,
"walk_factor": 1.019,
"homer_factor": 1.0766,
"woba_minus_xwoba": -0.01,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "671737",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.019,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0766,
"adjusted": 1
},
"predicted_SO": {
"original": 7.0,
"factor": 1.046,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 2,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 24,
"Pitches": 106,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_MIN@SF | home | Anthony Molina | Anthony Molina | True | 5.0 | 6.0 | 3 | 3 | 2 | -1 | 4/4 | 2/1 | 7/6 | Last 10 before this game (8 available){
"model_context": {
"embedded_season": {
"ERA": 4.178571428571429,
"WHIP": 1.1071428571428572,
"IP": 28.0,
"games_started": null,
"games_pitched": 8,
"role_avg_IP": 4.667,
"recent_avg_IP": 4.667,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0259,
"sample_weight": 0.45,
"run_prevention_factor": 0.9978,
"strikeout_factor": 0.997,
"walk_factor": 0.9654,
"homer_factor": 0.9986,
"regression_flag": "neutral",
"k_percent": 21.9,
"bb_percent": 5.3,
"woba": 0.288,
"xwoba": 0.303,
"barrel_percent": 7.2,
"hard_hit_percent": 38.6,
"whiff_percent": 23.9
},
"espn_rank": {
"rank": 432,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 28.0,
"season_ERA": 4.179,
"season_WHIP": 1.107,
"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.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": "683627",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 8,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.0,
"ER": 10.0,
"R": 12.0,
"H": 19.0,
"BB": 5.0,
"SO": 23.0,
"HR": 2.0,
"BF": 93.0,
"Pitches": 368.0
},
"per_game": {
"IP": 4.2,
"ER": 2.0,
"R": 2.4,
"H": 3.8,
"BB": 1.0,
"SO": 4.6,
"HR": 0.4,
"BF": 18.6,
"Pitches": 73.6
},
"rates": {
"ERA": 3.913,
"WHIP": 1.0435,
"ER_per_IP": 0.43478,
"H_per_IP": 0.82609,
"BB_per_IP": 0.21739,
"SO_per_IP": 1.0,
"HR_per_IP": 0.08696
}
},
"last_10": {
"games": 8,
"totals": {
"IP": 28.0,
"ER": 13.0,
"R": 16.0,
"H": 25.0,
"BB": 6.0,
"SO": 25.0,
"HR": 3.0,
"BF": 114.0,
"Pitches": 456.0
},
"per_game": {
"IP": 3.1,
"ER": 1.625,
"R": 2.0,
"H": 3.125,
"BB": 0.75,
"SO": 3.125,
"HR": 0.375,
"BF": 14.25,
"Pitches": 57.0
},
"rates": {
"ERA": 4.1786,
"WHIP": 1.1071,
"ER_per_IP": 0.46429,
"H_per_IP": 0.89286,
"BB_per_IP": 0.21429,
"SO_per_IP": 0.89286,
"HR_per_IP": 0.10714
}
},
"season": {
"games": 8,
"totals": {
"IP": 28.0,
"ER": 13.0,
"R": 16.0,
"H": 25.0,
"BB": 6.0,
"SO": 25.0,
"HR": 3.0,
"BF": 114.0,
"Pitches": 456.0
},
"per_game": {
"IP": 3.1,
"ER": 1.625,
"R": 2.0,
"H": 3.125,
"BB": 0.75,
"SO": 3.125,
"HR": 0.375,
"BF": 14.25,
"Pitches": 57.0
},
"rates": {
"ERA": 4.1786,
"WHIP": 1.1071,
"ER_per_IP": 0.46429,
"H_per_IP": 0.89286,
"BB_per_IP": 0.21429,
"SO_per_IP": 0.89286,
"HR_per_IP": 0.10714
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.128,
"predicted_H": 4.074,
"predicted_BB": 1.259,
"predicted_SO": 4.33,
"predicted_HR": 0.52,
"predicted_ERA": 4.2251,
"predicted_WHIP": 1.1763
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5125,
"form_weight": 0.4875,
"form_reliability": 0.6154,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6154,
"prior_weight": 0.3846
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.2,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.128,
"final": 2.5749,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 4.074,
"final": 4.0361,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.259,
"final": 1.6388,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.33,
"final": 5.1859,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.52,
"final": 0.2535,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.2251,
"final": 4.2251,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1763,
"final": 1.1763,
"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.0,
"ER": 13,
"H": 25,
"BB": 6,
"SO": 25,
"HR": 3,
"ERA": 4.178571428571429,
"WHIP": 1.1071428571428572,
"K9": 8.035714285714286,
"HR9": 0.9642857142857143,
"games_pitched": 8,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 8,
"error_prone": false
},
"games_count": 8,
"latest_game_date": "2026-09-16T00:00:00"
},
"recent_form_boost": 0.9640404778871128,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_BB": 2.0,
"predicted_SO": 6.0,
"predicted_HR": 0.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": "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": 3,
"predicted_H": 4,
"predicted_BB": 2,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "683627",
"player_name": "Anthony Molina",
"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": 3.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": "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": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 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": {}
},
{
"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": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.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": 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": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SF",
"games": 157,
"wins": 65,
"losses": 92,
"win_pct": 0.414,
"runs_scored": 661.0,
"runs_allowed": 742.0,
"run_differential": -81.0,
"run_differential_per_game": -0.5159,
"avg_runs_scored": 4.2102,
"avg_runs_allowed": 4.7261,
"offense_index": 0.9387,
"defense_index": 0.9491,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.4,
"avg_runs_allowed": 5.3,
"run_differential": -9.0
},
"available": true,
"quality_score": -0.2064
},
"opponent": {
"team": "MIN",
"games": 157,
"wins": 73,
"losses": 84,
"win_pct": 0.465,
"runs_scored": 714.0,
"runs_allowed": 781.0,
"run_differential": -67.0,
"run_differential_per_game": -0.4268,
"avg_runs_scored": 4.5478,
"avg_runs_allowed": 4.9745,
"offense_index": 1.0139,
"defense_index": 0.9017,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 4.8,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.1171
},
"edges": {
"quality_edge": -0.0893,
"offense_edge": -0.0613,
"opponent_offense_edge": 0.0139,
"defense_strength": -0.0509,
"opponent_defense_weakness": 0.0983,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9943,
"run_prevention": 1.0118,
"strikeout": 0.9962
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "683627",
"profile": {
"available": true,
"pitcher_id": "683627",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 85.0,
"k_percent": 21.9,
"bb_percent": 5.3,
"woba": 0.288,
"xwoba": 0.303,
"sweet_spot_percent": 43.4,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 38.6,
"avg_best_speed": 76.6867,
"avg_hyper_speed": 93.5818,
"whiff_percent": 23.9,
"swing_percent": 51.3
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.1089,
"command_and_miss": 0.135,
"regression_edge": -0.4286,
"xwoba_edge": 0.2357,
"barrel_edge": 0.0,
"hard_hit_edge": -0.1,
"whiff_edge": -0.1643,
"bb_edge": 0.9625,
"pitch_design_score": 0.0534
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "683627",
"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": 90.81081078691422,
"release_spin_rate": 2116.6344098143236,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 90.81081078691422,
"release_spin_rate": 2116.6344098143236,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.8108,
"release_spin_rate": 2116.6344,
"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.0534,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.3813,
"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.0259,
"sample_weight": 0.45,
"run_prevention_factor": 0.9978,
"strikeout_factor": 0.997,
"walk_factor": 0.9654,
"homer_factor": 0.9986,
"woba_minus_xwoba": -0.015,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "683627",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.999,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.999,
"adjusted": 4
},
"predicted_BB": {
"original": 1.0,
"factor": 0.9844,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9994,
"adjusted": 0
},
"predicted_SO": {
"original": 6.0,
"factor": 0.9987,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 7,
"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 8 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"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/20260922_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"
}
} |
| 20260922 | 20260922_NYM@TEX | away | Sean Manaea | Sean Manaea | True | 5.2 | 6.0 | 1 | 2 | 2 | 0 | 3/3 | 4/2 | 6/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.737980769230769,
"WHIP": 1.3197115384615385,
"IP": 138.2,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.627,
"recent_avg_IP": 5.533,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3478,
"sample_weight": 1.0,
"run_prevention_factor": 1.0296,
"strikeout_factor": 0.9837,
"walk_factor": 0.953,
"homer_factor": 1.1084,
"regression_flag": "neutral",
"k_percent": 22.0,
"bb_percent": 6.8,
"woba": 0.348,
"xwoba": 0.337,
"barrel_percent": 10.9,
"hard_hit_percent": 41.5,
"whiff_percent": 22.1
},
"espn_rank": {
"rank": 553,
"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": "640455",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.2,
"ER": 21.0,
"R": 21.0,
"H": 33.0,
"BB": 4.0,
"SO": 19.0,
"HR": 7.0,
"BF": 120.0,
"Pitches": 402.0
},
"per_game": {
"IP": 5.2,
"ER": 4.2,
"R": 4.2,
"H": 6.6,
"BB": 0.8,
"SO": 3.8,
"HR": 1.4,
"BF": 24.0,
"Pitches": 80.4
},
"rates": {
"ERA": 6.8313,
"WHIP": 1.3373,
"ER_per_IP": 0.75904,
"H_per_IP": 1.19277,
"BB_per_IP": 0.14458,
"SO_per_IP": 0.68675,
"HR_per_IP": 0.25301
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 59.0,
"ER": 31.0,
"R": 31.0,
"H": 60.0,
"BB": 15.0,
"SO": 51.0,
"HR": 11.0,
"BF": 248.0,
"Pitches": 859.0
},
"per_game": {
"IP": 6.0,
"ER": 3.1,
"R": 3.1,
"H": 6.0,
"BB": 1.5,
"SO": 5.1,
"HR": 1.1,
"BF": 24.8,
"Pitches": 85.9
},
"rates": {
"ERA": 4.7288,
"WHIP": 1.2712,
"ER_per_IP": 0.52542,
"H_per_IP": 1.01695,
"BB_per_IP": 0.25424,
"SO_per_IP": 0.86441,
"HR_per_IP": 0.18644
}
},
"season": {
"games": 31,
"totals": {
"IP": 138.2,
"ER": 73.0,
"R": 80.0,
"H": 142.0,
"BB": 41.0,
"SO": 132.0,
"HR": 23.0,
"BF": 601.0,
"Pitches": 2294.0
},
"per_game": {
"IP": 4.1,
"ER": 2.3548,
"R": 2.5806,
"H": 4.5806,
"BB": 1.3226,
"SO": 4.2581,
"HR": 0.7419,
"BF": 19.3871,
"Pitches": 74.0
},
"rates": {
"ERA": 4.738,
"WHIP": 1.3197,
"ER_per_IP": 0.52644,
"H_per_IP": 1.02404,
"BB_per_IP": 0.29567,
"SO_per_IP": 0.95192,
"HR_per_IP": 0.16587
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 3.4,
"predicted_H": 5.987,
"predicted_BB": 1.306,
"predicted_SO": 4.545,
"predicted_HR": 1.127,
"predicted_ERA": 5.5257,
"predicted_WHIP": 1.317
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 3.4,
"final": 2.4192,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.987,
"final": 4.7663,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.306,
"final": 2.407,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.545,
"final": 4.731,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.127,
"final": 0.6664,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.5257,
"final": 5.5257,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.317,
"final": 1.317,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 59.0,
"ER": 31,
"H": 60,
"BB": 15,
"SO": 51,
"HR": 11,
"ERA": 4.728813559322034,
"WHIP": 1.271186440677966,
"K9": 7.779661016949152,
"HR9": 1.6779661016949152,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 1.027178948701152,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_BB": 4.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "640455",
"player_name": "Sean Manaea",
"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": 4.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYM",
"games": 156,
"wins": 71,
"losses": 85,
"win_pct": 0.4551,
"runs_scored": 668.0,
"runs_allowed": 709.0,
"run_differential": -41.0,
"run_differential_per_game": -0.2628,
"avg_runs_scored": 4.2821,
"avg_runs_allowed": 4.5449,
"offense_index": 0.9563,
"defense_index": 0.9852,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.2,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.1404
},
"opponent": {
"team": "TEX",
"games": 156,
"wins": 78,
"losses": 78,
"win_pct": 0.5,
"runs_scored": 653.0,
"runs_allowed": 687.0,
"run_differential": -34.0,
"run_differential_per_game": -0.2179,
"avg_runs_scored": 4.1859,
"avg_runs_allowed": 4.4038,
"offense_index": 0.9348,
"defense_index": 1.0168,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.0,
"run_differential": 6.0
},
"available": true,
"quality_score": 0.0082
},
"edges": {
"quality_edge": -0.1486,
"offense_edge": -0.0437,
"opponent_offense_edge": -0.0652,
"defense_strength": -0.0148,
"opponent_defense_weakness": -0.0168,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9962,
"run_prevention": 0.9985,
"strikeout": 1.0008
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "640455",
"profile": {
"available": true,
"pitcher_id": "640455",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 578.0,
"k_percent": 22.0,
"bb_percent": 6.8,
"woba": 0.348,
"xwoba": 0.337,
"sweet_spot_percent": 35.3,
"barrel_batted_rate": 10.9,
"hard_hit_percent": 41.5,
"avg_best_speed": 77.5935,
"avg_hyper_speed": 94.6278,
"whiff_percent": 22.1,
"swing_percent": 50.3
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.6299,
"command_and_miss": -0.0236,
"regression_edge": 0.3143,
"xwoba_edge": -0.7357,
"barrel_edge": -0.8222,
"hard_hit_edge": -0.5143,
"whiff_edge": -0.4214,
"bb_edge": 0.5875,
"pitch_design_score": -0.254
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "640455",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 85,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 85,
"pitch_usage": 0.0,
"release_speed": 85.32242397875616,
"release_spin_rate": 2105.383936655872,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 85,
"pitch_usage": 0.0,
"release_speed": 85.32242397875616,
"release_spin_rate": 2105.383936655872,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.3224,
"release_spin_rate": 2105.3839,
"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.254,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.814,
"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.3478,
"sample_weight": 1.0,
"run_prevention_factor": 1.0296,
"strikeout_factor": 0.9837,
"walk_factor": 0.953,
"homer_factor": 1.1084,
"woba_minus_xwoba": 0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "640455",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0296,
"adjusted": 4
},
"predicted_H": {
"original": 6.0,
"factor": 1.0296,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.953,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1084,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9837,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 3,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 4,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"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 +0."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_NYM@TEX | home | MacKenzie Gore | MacKenzie Gore | True | 4.2 | 5.0 | 1 | 2 | 1 | -1 | 3/4 | 1/1 | 3/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.672032193158954,
"WHIP": 1.352112676056338,
"IP": 165.2,
"games_started": null,
"games_pitched": 32,
"role_avg_IP": 5.177,
"recent_avg_IP": 4.0,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0126,
"sample_weight": 1.0,
"run_prevention_factor": 0.9989,
"strikeout_factor": 1.0146,
"walk_factor": 1.009,
"homer_factor": 1.0378,
"regression_flag": "neutral",
"k_percent": 23.9,
"bb_percent": 9.6,
"woba": 0.319,
"xwoba": 0.311,
"barrel_percent": 8.5,
"hard_hit_percent": 40.5,
"whiff_percent": 25.6
},
"espn_rank": {
"rank": 204,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 32.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8649,
"prior_weight": 0.1351
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "669022",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 32,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 20.0,
"ER": 17.0,
"R": 17.0,
"H": 28.0,
"BB": 17.0,
"SO": 11.0,
"HR": 1.0,
"BF": 101.0,
"Pitches": 391.0
},
"per_game": {
"IP": 4.0,
"ER": 3.4,
"R": 3.4,
"H": 5.6,
"BB": 3.4,
"SO": 2.2,
"HR": 0.2,
"BF": 20.2,
"Pitches": 78.2
},
"rates": {
"ERA": 7.65,
"WHIP": 2.25,
"ER_per_IP": 0.85,
"H_per_IP": 1.4,
"BB_per_IP": 0.85,
"SO_per_IP": 0.55,
"HR_per_IP": 0.05
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.0,
"ER": 24.0,
"R": 24.0,
"H": 48.0,
"BB": 25.0,
"SO": 45.0,
"HR": 5.0,
"BF": 222.0,
"Pitches": 887.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4,
"R": 2.4,
"H": 4.8,
"BB": 2.5,
"SO": 4.5,
"HR": 0.5,
"BF": 22.2,
"Pitches": 88.7
},
"rates": {
"ERA": 4.32,
"WHIP": 1.46,
"ER_per_IP": 0.48,
"H_per_IP": 0.96,
"BB_per_IP": 0.5,
"SO_per_IP": 0.9,
"HR_per_IP": 0.1
}
},
"season": {
"games": 32,
"totals": {
"IP": 165.2,
"ER": 86.0,
"R": 86.0,
"H": 155.0,
"BB": 69.0,
"SO": 172.0,
"HR": 19.0,
"BF": 720.0,
"Pitches": 2860.0
},
"per_game": {
"IP": 5.1,
"ER": 2.6875,
"R": 2.6875,
"H": 4.8438,
"BB": 2.1562,
"SO": 5.375,
"HR": 0.5938,
"BF": 22.5,
"Pitches": 89.375
},
"rates": {
"ERA": 4.672,
"WHIP": 1.3521,
"ER_per_IP": 0.51911,
"H_per_IP": 0.93561,
"BB_per_IP": 0.4165,
"SO_per_IP": 1.03823,
"HR_per_IP": 0.11469
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.935,
"predicted_H": 5.224,
"predicted_BB": 2.797,
"predicted_SO": 3.665,
"predicted_HR": 0.415,
"predicted_ERA": 5.7133,
"predicted_WHIP": 1.7348
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4071,
"form_weight": 0.5929,
"form_reliability": 0.8649,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 32.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8649,
"prior_weight": 0.1351
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.935,
"final": 2.5544,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 5.224,
"final": 4.3187,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.797,
"final": 2.0655,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 3.665,
"final": 3.3943,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.415,
"final": 0.6531,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.7133,
"final": 5.7133,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.7348,
"final": 1.7348,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 50.0,
"ER": 24,
"H": 48,
"BB": 25,
"SO": 45,
"HR": 5,
"ERA": 4.32,
"WHIP": 1.46,
"K9": 8.1,
"HR9": 0.9,
"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.9859077622604742,
"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": 1.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 32.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8649,
"prior_weight": 0.1351
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669022",
"player_name": "MacKenzie Gore",
"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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_R": 2.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"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": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.2,
"delta": -0.4667,
"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": 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": 156,
"wins": 78,
"losses": 78,
"win_pct": 0.5,
"runs_scored": 653.0,
"runs_allowed": 687.0,
"run_differential": -34.0,
"run_differential_per_game": -0.2179,
"avg_runs_scored": 4.1859,
"avg_runs_allowed": 4.4038,
"offense_index": 0.9348,
"defense_index": 1.0168,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.0,
"run_differential": 6.0
},
"available": true,
"quality_score": 0.0082
},
"opponent": {
"team": "NYM",
"games": 156,
"wins": 71,
"losses": 85,
"win_pct": 0.4551,
"runs_scored": 668.0,
"runs_allowed": 709.0,
"run_differential": -41.0,
"run_differential_per_game": -0.2628,
"avg_runs_scored": 4.2821,
"avg_runs_allowed": 4.5449,
"offense_index": 0.9563,
"defense_index": 0.9852,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.2,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.1404
},
"edges": {
"quality_edge": 0.1486,
"offense_edge": -0.0652,
"opponent_offense_edge": -0.0437,
"defense_strength": 0.0168,
"opponent_defense_weakness": 0.0148,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0082,
"run_prevention": 0.9839,
"strikeout": 1.008
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669022",
"profile": {
"available": true,
"pitcher_id": "669022",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 699.0,
"k_percent": 23.9,
"bb_percent": 9.6,
"woba": 0.319,
"xwoba": 0.311,
"sweet_spot_percent": 33.9,
"barrel_batted_rate": 8.5,
"hard_hit_percent": 40.5,
"avg_best_speed": 77.3062,
"avg_hyper_speed": 94.4164,
"whiff_percent": 25.6,
"swing_percent": 48.8
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": -0.0834,
"command_and_miss": 0.1336,
"regression_edge": 0.2286,
"xwoba_edge": 0.0071,
"barrel_edge": -0.2889,
"hard_hit_edge": -0.3714,
"whiff_edge": 0.0786,
"bb_edge": -0.1125,
"pitch_design_score": 0.0212
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669022",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 85,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 85,
"pitch_usage": 0.0,
"release_speed": 90.23611334556708,
"release_spin_rate": 2168.650138380656,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 85,
"pitch_usage": 0.0,
"release_speed": 90.23611334556708,
"release_spin_rate": 2168.650138380656,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.2361,
"release_spin_rate": 2168.6501,
"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.0212,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.1515,
"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.0126,
"sample_weight": 1.0,
"run_prevention_factor": 0.9989,
"strikeout_factor": 1.0146,
"walk_factor": 1.009,
"homer_factor": 1.0378,
"woba_minus_xwoba": 0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669022",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9989,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 0.9989,
"adjusted": 6
},
"predicted_BB": {
"original": 3.0,
"factor": 1.009,
"adjusted": 3
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0378,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0146,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 18,
"Pitches": 77,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_SD@LAD | away | Michael King | Michael King | True | 6.0 | 4.0 | -6 | 4 | 5 | 1 | 8/6 | 2/2 | 3/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.0331491712707184,
"WHIP": 1.160220994475138,
"IP": 181.0,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.839,
"recent_avg_IP": 6.4,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0825,
"sample_weight": 1.0,
"run_prevention_factor": 1.007,
"strikeout_factor": 0.9917,
"walk_factor": 1.001,
"homer_factor": 1.0,
"regression_flag": "neutral",
"k_percent": 20.9,
"bb_percent": 9.2,
"woba": 0.292,
"xwoba": 0.321,
"barrel_percent": 8.4,
"hard_hit_percent": 32.7,
"whiff_percent": 24.6
},
"espn_rank": {
"rank": 12,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "650633",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 32.0,
"ER": 5.0,
"R": 5.0,
"H": 25.0,
"BB": 10.0,
"SO": 26.0,
"HR": 2.0,
"BF": 126.0,
"Pitches": 490.0
},
"per_game": {
"IP": 6.1,
"ER": 1.0,
"R": 1.0,
"H": 5.0,
"BB": 2.0,
"SO": 5.2,
"HR": 0.4,
"BF": 25.2,
"Pitches": 98.0
},
"rates": {
"ERA": 1.4062,
"WHIP": 1.0938,
"ER_per_IP": 0.15625,
"H_per_IP": 0.78125,
"BB_per_IP": 0.3125,
"SO_per_IP": 0.8125,
"HR_per_IP": 0.0625
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.2,
"ER": 18.0,
"R": 19.0,
"H": 51.0,
"BB": 19.0,
"SO": 51.0,
"HR": 9.0,
"BF": 245.0,
"Pitches": 968.0
},
"per_game": {
"IP": 6.0,
"ER": 1.8,
"R": 1.9,
"H": 5.1,
"BB": 1.9,
"SO": 5.1,
"HR": 0.9,
"BF": 24.5,
"Pitches": 96.8
},
"rates": {
"ERA": 2.627,
"WHIP": 1.1351,
"ER_per_IP": 0.29189,
"H_per_IP": 0.82703,
"BB_per_IP": 0.30811,
"SO_per_IP": 0.82703,
"HR_per_IP": 0.14595
}
},
"season": {
"games": 31,
"totals": {
"IP": 181.0,
"ER": 61.0,
"R": 63.0,
"H": 142.0,
"BB": 68.0,
"SO": 154.0,
"HR": 20.0,
"BF": 736.0,
"Pitches": 2900.0
},
"per_game": {
"IP": 6.0,
"ER": 1.9677,
"R": 2.0323,
"H": 4.5806,
"BB": 2.1935,
"SO": 4.9677,
"HR": 0.6452,
"BF": 23.7419,
"Pitches": 93.5484
},
"rates": {
"ERA": 3.0331,
"WHIP": 1.1602,
"ER_per_IP": 0.33702,
"H_per_IP": 0.78453,
"BB_per_IP": 0.37569,
"SO_per_IP": 0.85083,
"HR_per_IP": 0.1105
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.7,
"predicted_H": 5.046,
"predicted_BB": 2.028,
"predicted_SO": 5.154,
"predicted_HR": 0.661,
"predicted_ERA": 2.4964,
"predicted_WHIP": 1.1542
}
},
"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": 4.0,
"form": 1.7,
"final": 2.64,
"source": "model_form_blend"
},
"predicted_H": {
"model": 8.0,
"form": 5.046,
"final": 6.2533,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.028,
"final": 2.0166,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 5.154,
"final": 4.2737,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.661,
"final": 0.7995,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.4964,
"final": 2.4964,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1542,
"final": 1.1542,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 61.2,
"ER": 18,
"H": 51,
"BB": 19,
"SO": 51,
"HR": 9,
"ERA": 2.627027027027027,
"WHIP": 1.135135135135135,
"K9": 7.443243243243242,
"HR9": 1.3135135135135134,
"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.7873266811793931,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 4.0,
"predicted_H": 8.0,
"predicted_BB": 2.0,
"predicted_SO": 3.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 3,
"predicted_H": 8,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "650633",
"player_name": "Michael King",
"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": 8.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 8.0,
"predicted_HR": 1.0,
"predicted_IP": 6.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": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 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": 2,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 3.0,
"after": 5.0,
"delta": 2.0,
"percent_delta": 0.6667,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"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": 8.0,
"predicted_HR": 1.0,
"predicted_IP": 6.0,
"predicted_R": 3.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 3.0,
"delta": -2.0,
"percent_delta": -0.4,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 3.0,
"delta": -2.0,
"percent_delta": -0.4,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SD",
"games": 156,
"wins": 87,
"losses": 69,
"win_pct": 0.5577,
"runs_scored": 690.0,
"runs_allowed": 649.0,
"run_differential": 41.0,
"run_differential_per_game": 0.2628,
"avg_runs_scored": 4.4231,
"avg_runs_allowed": 4.1603,
"offense_index": 0.9861,
"defense_index": 1.0781,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 9,
"losses": 1,
"win_pct": 0.9,
"avg_runs_scored": 7.1,
"avg_runs_allowed": 4.7,
"run_differential": 24.0
},
"available": true,
"quality_score": 0.2213
},
"opponent": {
"team": "LAD",
"games": 156,
"wins": 96,
"losses": 60,
"win_pct": 0.6154,
"runs_scored": 780.0,
"runs_allowed": 587.0,
"run_differential": 193.0,
"run_differential_per_game": 1.2372,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 3.7628,
"offense_index": 1.1147,
"defense_index": 1.192,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 2.8,
"run_differential": 24.0
},
"available": true,
"quality_score": 0.3198
},
"edges": {
"quality_edge": -0.0985,
"offense_edge": -0.0139,
"opponent_offense_edge": 0.1147,
"defense_strength": 0.0781,
"opponent_defense_weakness": -0.192,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 0.9938,
"run_prevention": 1.0155,
"strikeout": 0.9879
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "650633",
"profile": {
"available": true,
"pitcher_id": "650633",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 705.0,
"k_percent": 20.9,
"bb_percent": 9.2,
"woba": 0.292,
"xwoba": 0.321,
"sweet_spot_percent": 33.7,
"barrel_batted_rate": 8.4,
"hard_hit_percent": 32.7,
"avg_best_speed": 75.915,
"avg_hyper_speed": 93.083,
"whiff_percent": 24.6,
"swing_percent": 46.4
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.0493,
"command_and_miss": -0.0893,
"regression_edge": -0.8286,
"xwoba_edge": -0.2786,
"barrel_edge": -0.2667,
"hard_hit_edge": 0.7429,
"whiff_edge": -0.0643,
"bb_edge": -0.0125,
"pitch_design_score": -0.0499
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "650633",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 97,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 88.9666257983146,
"release_spin_rate": 2288.299466647343,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 88.9666257983146,
"release_spin_rate": 2288.299466647343,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.9666,
"release_spin_rate": 2288.2995,
"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.0499,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.3563,
"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.0825,
"sample_weight": 1.0,
"run_prevention_factor": 1.007,
"strikeout_factor": 0.9917,
"walk_factor": 1.001,
"homer_factor": 1.0,
"woba_minus_xwoba": -0.029,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "650633",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 1.007,
"adjusted": 1
},
"predicted_H": {
"original": 5.0,
"factor": 1.007,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 1.001,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9917,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 8,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 29,
"Pitches": 120,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +1."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -6 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_SD@LAD | home | Brock Stewart | Brock Stewart | True | 4.1 | 1.0 | -10 | 2 | 0 | -2 | 3/1 | 4/0 | 5/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.189189189189189,
"WHIP": 0.9324324324324323,
"IP": 24.2,
"games_started": null,
"games_pitched": 25,
"role_avg_IP": 0.987,
"recent_avg_IP": 0.933,
"last_start_IP": 0.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4256,
"sample_weight": 0.45,
"run_prevention_factor": 0.9638,
"strikeout_factor": 1.0148,
"walk_factor": 1.0041,
"homer_factor": 0.9241,
"regression_flag": "neutral",
"k_percent": 24.5,
"bb_percent": 9.6,
"woba": 0.248,
"xwoba": 0.245,
"barrel_percent": 4.8,
"hard_hit_percent": 25.8,
"whiff_percent": 28.2
},
"espn_rank": {
"rank": 254,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.02,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.501,
"prior_weight": 0.499
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "592779",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 25,
"reference_playing_time": 4.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 4.2,
"ER": 0.0,
"R": 0.0,
"H": 2.0,
"BB": 1.0,
"SO": 4.0,
"HR": 0.0,
"BF": 15.0,
"Pitches": 68.0
},
"per_game": {
"IP": 1.0,
"ER": 0.0,
"R": 0.0,
"H": 0.4,
"BB": 0.2,
"SO": 0.8,
"HR": 0.0,
"BF": 3.0,
"Pitches": 13.6
},
"rates": {
"ERA": 0.0,
"WHIP": 0.6429,
"ER_per_IP": 0.0,
"H_per_IP": 0.42857,
"BB_per_IP": 0.21429,
"SO_per_IP": 0.85714,
"HR_per_IP": 0.0
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 9.0,
"ER": 2.0,
"R": 3.0,
"H": 8.0,
"BB": 4.0,
"SO": 7.0,
"HR": 0.0,
"BF": 35.0,
"Pitches": 123.0
},
"per_game": {
"IP": 1.0,
"ER": 0.2,
"R": 0.3,
"H": 0.8,
"BB": 0.4,
"SO": 0.7,
"HR": 0.0,
"BF": 3.5,
"Pitches": 12.3
},
"rates": {
"ERA": 2.0,
"WHIP": 1.3333,
"ER_per_IP": 0.22222,
"H_per_IP": 0.88889,
"BB_per_IP": 0.44444,
"SO_per_IP": 0.77778,
"HR_per_IP": 0.0
}
},
"season": {
"games": 25,
"totals": {
"IP": 24.2,
"ER": 6.0,
"R": 8.0,
"H": 14.0,
"BB": 9.0,
"SO": 23.0,
"HR": 2.0,
"BF": 93.0,
"Pitches": 351.0
},
"per_game": {
"IP": 1.0,
"ER": 0.24,
"R": 0.32,
"H": 0.56,
"BB": 0.36,
"SO": 0.92,
"HR": 0.08,
"BF": 3.72,
"Pitches": 14.04
},
"rates": {
"ERA": 2.1892,
"WHIP": 0.9324,
"ER_per_IP": 0.24324,
"H_per_IP": 0.56757,
"BB_per_IP": 0.36486,
"SO_per_IP": 0.93243,
"HR_per_IP": 0.08108
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 2.2,
"predicted_ER": 0.846,
"predicted_H": 2.127,
"predicted_BB": 0.933,
"predicted_SO": 2.373,
"predicted_HR": 0.22,
"predicted_ERA": 2.86,
"predicted_WHIP": 1.149
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5608,
"form_weight": 0.4392,
"form_reliability": 0.501,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.02,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.501,
"prior_weight": 0.499
},
"applied_metrics": {
"predicted_IP": {
"model": 4.1,
"form": 2.2,
"final": 3.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 0.846,
"final": 1.4932,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 2.127,
"final": 2.6166,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 0.933,
"final": 2.6531,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 2.373,
"final": 3.8463,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.22,
"final": 0.6574,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.86,
"final": 2.86,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.149,
"final": 1.149,
"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": 8.1,
"ER": 2,
"H": 8,
"BB": 4,
"SO": 6,
"HR": 0,
"ERA": 2.16,
"WHIP": 1.4400000000000002,
"K9": 6.480000000000001,
"HR9": 0.0,
"games_pitched": 9,
"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.9289927210843056,
"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": 4.0,
"predicted_SO": 5.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 5.02,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.501,
"prior_weight": 0.499
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "592779",
"player_name": "Brock Stewart",
"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": 4.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 4.3333,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_R": 2.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.3333,
"after": 4.1,
"delta": -0.2333,
"percent_delta": -0.0538,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAD",
"games": 156,
"wins": 96,
"losses": 60,
"win_pct": 0.6154,
"runs_scored": 780.0,
"runs_allowed": 587.0,
"run_differential": 193.0,
"run_differential_per_game": 1.2372,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 3.7628,
"offense_index": 1.1147,
"defense_index": 1.192,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.2,
"avg_runs_allowed": 2.8,
"run_differential": 24.0
},
"available": true,
"quality_score": 0.3198
},
"opponent": {
"team": "SD",
"games": 156,
"wins": 87,
"losses": 69,
"win_pct": 0.5577,
"runs_scored": 690.0,
"runs_allowed": 649.0,
"run_differential": 41.0,
"run_differential_per_game": 0.2628,
"avg_runs_scored": 4.4231,
"avg_runs_allowed": 4.1603,
"offense_index": 0.9861,
"defense_index": 1.0781,
"current_streak": "W5",
"recent": {
"games": 10,
"wins": 9,
"losses": 1,
"win_pct": 0.9,
"avg_runs_scored": 7.1,
"avg_runs_allowed": 4.7,
"run_differential": 24.0
},
"available": true,
"quality_score": 0.2213
},
"edges": {
"quality_edge": 0.0985,
"offense_edge": 0.1147,
"opponent_offense_edge": -0.0139,
"defense_strength": 0.192,
"opponent_defense_weakness": -0.0781,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 1.0103,
"run_prevention": 0.9737,
"strikeout": 1.0041
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "592779",
"profile": {
"available": true,
"pitcher_id": "592779",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 86.0,
"k_percent": 24.5,
"bb_percent": 9.6,
"woba": 0.248,
"xwoba": 0.245,
"sweet_spot_percent": 24.2,
"barrel_batted_rate": 4.8,
"hard_hit_percent": 25.8,
"avg_best_speed": 66.3437,
"avg_hyper_speed": 92.2968,
"whiff_percent": 28.2,
"swing_percent": 49.9
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 1.5205,
"command_and_miss": 0.3021,
"regression_edge": 0.0857,
"xwoba_edge": 1.8929,
"barrel_edge": 0.5333,
"hard_hit_edge": 1.7286,
"whiff_edge": 0.45,
"bb_edge": -0.1125,
"pitch_design_score": 0.0883
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "592779",
"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": 91.43371502899491,
"release_spin_rate": 2369.028774217187,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 91.43371502899491,
"release_spin_rate": 2369.028774217187,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.4337,
"release_spin_rate": 2369.0288,
"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.0883,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.6305,
"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.4256,
"sample_weight": 0.45,
"run_prevention_factor": 0.9638,
"strikeout_factor": 1.0148,
"walk_factor": 1.0041,
"homer_factor": 0.9241,
"woba_minus_xwoba": 0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "592779",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9837,
"adjusted": 1
},
"predicted_H": {
"original": 2.0,
"factor": 0.9837,
"adjusted": 2
},
"predicted_BB": {
"original": 1.0,
"factor": 1.0018,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9658,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0067,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 3,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 4,
"predicted_SO": 5,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"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."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -10 outs from the projected workload."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -4."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_STL@PIT | away | Andre Pallante | Andre Pallante | True | 5.1 | 6.0 | 2 | 2 | 1 | -1 | 2/3 | 1/2 | 10/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6953642384105962,
"WHIP": 1.2582781456953642,
"IP": 151.0,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.593,
"recent_avg_IP": 5.4,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0286,
"sample_weight": 1.0,
"run_prevention_factor": 0.9976,
"strikeout_factor": 0.9471,
"walk_factor": 0.967,
"homer_factor": 0.936,
"regression_flag": "neutral",
"k_percent": 16.5,
"bb_percent": 7.5,
"woba": 0.301,
"xwoba": 0.309,
"barrel_percent": 4.9,
"hard_hit_percent": 34.2,
"whiff_percent": 21.2
},
"espn_rank": {
"rank": 73,
"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": "669467",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.0,
"ER": 12.0,
"R": 14.0,
"H": 29.0,
"BB": 10.0,
"SO": 14.0,
"HR": 1.0,
"BF": 112.0,
"Pitches": 444.0
},
"per_game": {
"IP": 5.1,
"ER": 2.4,
"R": 2.8,
"H": 5.8,
"BB": 2.0,
"SO": 2.8,
"HR": 0.2,
"BF": 22.4,
"Pitches": 88.8
},
"rates": {
"ERA": 4.0,
"WHIP": 1.4444,
"ER_per_IP": 0.44444,
"H_per_IP": 1.07407,
"BB_per_IP": 0.37037,
"SO_per_IP": 0.51852,
"HR_per_IP": 0.03704
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 56.0,
"ER": 24.0,
"R": 26.0,
"H": 54.0,
"BB": 20.0,
"SO": 34.0,
"HR": 2.0,
"BF": 231.0,
"Pitches": 912.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.6,
"H": 5.4,
"BB": 2.0,
"SO": 3.4,
"HR": 0.2,
"BF": 23.1,
"Pitches": 91.2
},
"rates": {
"ERA": 3.8571,
"WHIP": 1.3214,
"ER_per_IP": 0.42857,
"H_per_IP": 0.96429,
"BB_per_IP": 0.35714,
"SO_per_IP": 0.60714,
"HR_per_IP": 0.03571
}
},
"season": {
"games": 27,
"totals": {
"IP": 151.0,
"ER": 62.0,
"R": 66.0,
"H": 143.0,
"BB": 47.0,
"SO": 104.0,
"HR": 11.0,
"BF": 629.0,
"Pitches": 2462.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2963,
"R": 2.4444,
"H": 5.2963,
"BB": 1.7407,
"SO": 3.8519,
"HR": 0.4074,
"BF": 23.2963,
"Pitches": 91.1852
},
"rates": {
"ERA": 3.6954,
"WHIP": 1.2583,
"ER_per_IP": 0.4106,
"H_per_IP": 0.94702,
"BB_per_IP": 0.31126,
"SO_per_IP": 0.68874,
"HR_per_IP": 0.07285
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.438,
"predicted_H": 5.519,
"predicted_BB": 1.961,
"predicted_SO": 3.506,
"predicted_HR": 0.33,
"predicted_ERA": 3.9984,
"predicted_WHIP": 1.3629
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.416,
"form_weight": 0.584,
"form_reliability": 0.8438,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.438,
"final": 2.2558,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 5.519,
"final": 4.0551,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.961,
"final": 1.5612,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 10.0,
"form": 3.506,
"final": 6.2075,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.33,
"final": 1.0247,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.9984,
"final": 3.9984,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3629,
"final": 1.3629,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 56.0,
"ER": 24,
"H": 54,
"BB": 20,
"SO": 34,
"HR": 2,
"ERA": 3.857142857142857,
"WHIP": 1.3214285714285714,
"K9": 5.464285714285714,
"HR9": 0.32142857142857145,
"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-15T00:00:00"
},
"recent_form_boost": 0.9303720479747599,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 1.0,
"predicted_SO": 10.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669467",
"player_name": "Andre Pallante",
"position": "Starter",
"team": "STL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 5.3333,
"predicted_SO": 10.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 5.1,
"predicted_R": 2.0,
"predicted_SO": 10.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 10.0,
"after": 10.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 10.0,
"after": 10.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "STL",
"games": 156,
"wins": 76,
"losses": 80,
"win_pct": 0.4872,
"runs_scored": 704.0,
"runs_allowed": 727.0,
"run_differential": -23.0,
"run_differential_per_game": -0.1474,
"avg_runs_scored": 4.5128,
"avg_runs_allowed": 4.6603,
"offense_index": 1.0062,
"defense_index": 0.9624,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 5.4,
"run_differential": -12.0
},
"available": true,
"quality_score": -0.064
},
"opponent": {
"team": "PIT",
"games": 156,
"wins": 79,
"losses": 77,
"win_pct": 0.5064,
"runs_scored": 748.0,
"runs_allowed": 719.0,
"run_differential": 29.0,
"run_differential_per_game": 0.1859,
"avg_runs_scored": 4.7949,
"avg_runs_allowed": 4.609,
"offense_index": 1.0691,
"defense_index": 0.9731,
"current_streak": "W4",
"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.0632
},
"edges": {
"quality_edge": -0.1272,
"offense_edge": 0.0062,
"opponent_offense_edge": 0.0691,
"defense_strength": -0.0376,
"opponent_defense_weakness": 0.0269,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.991,
"run_prevention": 1.0212,
"strikeout": 0.9907
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669467",
"profile": {
"available": true,
"pitcher_id": "669467",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 598.0,
"k_percent": 16.5,
"bb_percent": 7.5,
"woba": 0.301,
"xwoba": 0.309,
"sweet_spot_percent": 30.6,
"barrel_batted_rate": 4.9,
"hard_hit_percent": 34.2,
"avg_best_speed": 75.5032,
"avg_hyper_speed": 93.4717,
"whiff_percent": 21.2,
"swing_percent": 44.8
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.3032,
"command_and_miss": -0.4571,
"regression_edge": -0.2286,
"xwoba_edge": 0.0643,
"barrel_edge": 0.5111,
"hard_hit_edge": 0.5286,
"whiff_edge": -0.55,
"bb_edge": 0.4125,
"pitch_design_score": 0.0073
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669467",
"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": 89.9870971466055,
"release_spin_rate": 2284.8010573767824,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 89.9870971466055,
"release_spin_rate": 2284.8010573767824,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.9871,
"release_spin_rate": 2284.8011,
"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.0073,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0519,
"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.0286,
"sample_weight": 1.0,
"run_prevention_factor": 0.9976,
"strikeout_factor": 0.9471,
"walk_factor": 0.967,
"homer_factor": 0.936,
"woba_minus_xwoba": -0.008,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669467",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9976,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9976,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.967,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.936,
"adjusted": 0
},
"predicted_SO": {
"original": 3.0,
"factor": 0.9471,
"adjusted": 3
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 10,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 19,
"Pitches": 89,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_STL@PIT | home | Jared Jones | Jared Jones | True | 5.0 | 7.0 | 6 | 1 | 0 | -1 | 3/1 | 0/0 | 4/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.169117647058823,
"WHIP": 1.1911764705882353,
"IP": 90.2,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 4.772,
"recent_avg_IP": 5.333,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4335,
"sample_weight": 1.0,
"run_prevention_factor": 0.9632,
"strikeout_factor": 1.0814,
"walk_factor": 0.981,
"homer_factor": 0.9909,
"regression_flag": "neutral",
"k_percent": 28.7,
"bb_percent": 8.2,
"woba": 0.3,
"xwoba": 0.287,
"barrel_percent": 7.6,
"hard_hit_percent": 38.7,
"whiff_percent": 32.5
},
"espn_rank": {
"rank": 105,
"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": "683003",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.2,
"ER": 8.0,
"R": 8.0,
"H": 21.0,
"BB": 10.0,
"SO": 37.0,
"HR": 1.0,
"BF": 111.0,
"Pitches": 445.0
},
"per_game": {
"IP": 5.1,
"ER": 1.6,
"R": 1.6,
"H": 4.2,
"BB": 2.0,
"SO": 7.4,
"HR": 0.2,
"BF": 22.2,
"Pitches": 89.0
},
"rates": {
"ERA": 2.7,
"WHIP": 1.1625,
"ER_per_IP": 0.3,
"H_per_IP": 0.7875,
"BB_per_IP": 0.375,
"SO_per_IP": 1.3875,
"HR_per_IP": 0.0375
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.2,
"ER": 24.0,
"R": 24.0,
"H": 45.0,
"BB": 19.0,
"SO": 61.0,
"HR": 7.0,
"BF": 217.0,
"Pitches": 842.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4,
"R": 2.4,
"H": 4.5,
"BB": 1.9,
"SO": 6.1,
"HR": 0.7,
"BF": 21.7,
"Pitches": 84.2
},
"rates": {
"ERA": 4.2632,
"WHIP": 1.2632,
"ER_per_IP": 0.47368,
"H_per_IP": 0.88816,
"BB_per_IP": 0.375,
"SO_per_IP": 1.20395,
"HR_per_IP": 0.13816
}
},
"season": {
"games": 19,
"totals": {
"IP": 90.2,
"ER": 42.0,
"R": 43.0,
"H": 77.0,
"BB": 31.0,
"SO": 109.0,
"HR": 12.0,
"BF": 380.0,
"Pitches": 1493.0
},
"per_game": {
"IP": 4.2,
"ER": 2.2105,
"R": 2.2632,
"H": 4.0526,
"BB": 1.6316,
"SO": 5.7368,
"HR": 0.6316,
"BF": 20.0,
"Pitches": 78.5789
},
"rates": {
"ERA": 4.1691,
"WHIP": 1.1912,
"ER_per_IP": 0.46324,
"H_per_IP": 0.84926,
"BB_per_IP": 0.34191,
"SO_per_IP": 1.20221,
"HR_per_IP": 0.13235
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.116,
"predicted_H": 4.384,
"predicted_BB": 1.874,
"predicted_SO": 6.148,
"predicted_HR": 0.525,
"predicted_ERA": 3.7593,
"predicted_WHIP": 1.2353
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.438,
"form_weight": 0.562,
"form_reliability": 0.7917,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.116,
"final": 1.6272,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.384,
"final": 3.7778,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.874,
"final": 1.0532,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 6.148,
"final": 5.2072,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.525,
"final": 0.295,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.7593,
"final": 3.7593,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2353,
"final": 1.2353,
"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": 45,
"BB": 19,
"SO": 61,
"HR": 7,
"ERA": 4.263157894736842,
"WHIP": 1.263157894736842,
"K9": 10.835526315789473,
"HR9": 1.2434210526315788,
"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-16T00:00:00"
},
"recent_form_boost": 0.9745919727867899,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_BB": 0.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "683003",
"player_name": "Jared Jones",
"position": "Starter",
"team": "PIT",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 1.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": "PIT",
"games": 156,
"wins": 79,
"losses": 77,
"win_pct": 0.5064,
"runs_scored": 748.0,
"runs_allowed": 719.0,
"run_differential": 29.0,
"run_differential_per_game": 0.1859,
"avg_runs_scored": 4.7949,
"avg_runs_allowed": 4.609,
"offense_index": 1.0691,
"defense_index": 0.9731,
"current_streak": "W4",
"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.0632
},
"opponent": {
"team": "STL",
"games": 156,
"wins": 76,
"losses": 80,
"win_pct": 0.4872,
"runs_scored": 704.0,
"runs_allowed": 727.0,
"run_differential": -23.0,
"run_differential_per_game": -0.1474,
"avg_runs_scored": 4.5128,
"avg_runs_allowed": 4.6603,
"offense_index": 1.0062,
"defense_index": 0.9624,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.2,
"avg_runs_allowed": 5.4,
"run_differential": -12.0
},
"available": true,
"quality_score": -0.064
},
"edges": {
"quality_edge": 0.1272,
"offense_edge": 0.0691,
"opponent_offense_edge": 0.0062,
"defense_strength": -0.0269,
"opponent_defense_weakness": 0.0376,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.004,
"run_prevention": 0.9973,
"strikeout": 1.0033
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "683003",
"profile": {
"available": true,
"pitcher_id": "683003",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 356.0,
"k_percent": 28.7,
"bb_percent": 8.2,
"woba": 0.3,
"xwoba": 0.287,
"sweet_spot_percent": 35.3,
"barrel_batted_rate": 7.6,
"hard_hit_percent": 38.7,
"avg_best_speed": 78.645,
"avg_hyper_speed": 94.1422,
"whiff_percent": 32.5,
"swing_percent": 48.6
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.2788,
"command_and_miss": 0.8571,
"regression_edge": 0.3714,
"xwoba_edge": 0.6929,
"barrel_edge": -0.0889,
"hard_hit_edge": -0.1143,
"whiff_edge": 1.0643,
"bb_edge": 0.2375,
"pitch_design_score": 0.2169
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "683003",
"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": 93.73058494859055,
"release_spin_rate": 2516.3391420607936,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 93.73058494859055,
"release_spin_rate": 2516.3391420607936,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 93.7306,
"release_spin_rate": 2516.3391,
"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.2169,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.5492,
"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.4335,
"sample_weight": 1.0,
"run_prevention_factor": 0.9632,
"strikeout_factor": 1.0814,
"walk_factor": 0.981,
"homer_factor": 0.9909,
"woba_minus_xwoba": 0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "683003",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9632,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 0.9632,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.981,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9909,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0814,
"adjusted": 8
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 3,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 4,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 18,
"Pitches": 76,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by +6 outs from the projected workload."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_TB@NYY | away | Nick Martinez | Drew Rasmussen | False | 6.0 | 6.2 | 2 | 1 | 1 | 0 | 5/1 | 0/3 | 5/11 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.941634241245136,
"WHIP": 1.0680933852140078,
"IP": 171.1,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.908,
"recent_avg_IP": 5.933,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0706,
"sample_weight": 1.0,
"run_prevention_factor": 1.006,
"strikeout_factor": 0.9151,
"walk_factor": 0.887,
"homer_factor": 0.9595,
"regression_flag": "neutral",
"k_percent": 14.8,
"bb_percent": 3.5,
"woba": 0.29,
"xwoba": 0.309,
"barrel_percent": 6.7,
"hard_hit_percent": 32.7,
"whiff_percent": 17.3
},
"espn_rank": {
"rank": 20,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "607259",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.2,
"ER": 8.0,
"R": 8.0,
"H": 20.0,
"BB": 2.0,
"SO": 18.0,
"HR": 4.0,
"BF": 108.0,
"Pitches": 397.0
},
"per_game": {
"IP": 6.0,
"ER": 1.6,
"R": 1.6,
"H": 4.0,
"BB": 0.4,
"SO": 3.6,
"HR": 0.8,
"BF": 21.6,
"Pitches": 79.4
},
"rates": {
"ERA": 2.427,
"WHIP": 0.7416,
"ER_per_IP": 0.26966,
"H_per_IP": 0.67416,
"BB_per_IP": 0.06742,
"SO_per_IP": 0.60674,
"HR_per_IP": 0.13483
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.0,
"ER": 24.0,
"R": 24.0,
"H": 54.0,
"BB": 4.0,
"SO": 39.0,
"HR": 10.0,
"BF": 230.0,
"Pitches": 816.0
},
"per_game": {
"IP": 6.0,
"ER": 2.4,
"R": 2.4,
"H": 5.4,
"BB": 0.4,
"SO": 3.9,
"HR": 1.0,
"BF": 23.0,
"Pitches": 81.6
},
"rates": {
"ERA": 3.6,
"WHIP": 0.9667,
"ER_per_IP": 0.4,
"H_per_IP": 0.9,
"BB_per_IP": 0.06667,
"SO_per_IP": 0.65,
"HR_per_IP": 0.16667
}
},
"season": {
"games": 29,
"totals": {
"IP": 171.1,
"ER": 56.0,
"R": 56.0,
"H": 159.0,
"BB": 24.0,
"SO": 101.0,
"HR": 21.0,
"BF": 682.0,
"Pitches": 2380.0
},
"per_game": {
"IP": 6.0,
"ER": 1.931,
"R": 1.931,
"H": 5.4828,
"BB": 0.8276,
"SO": 3.4828,
"HR": 0.7241,
"BF": 23.5172,
"Pitches": 82.069
},
"rates": {
"ERA": 2.9416,
"WHIP": 1.0681,
"ER_per_IP": 0.32685,
"H_per_IP": 0.92802,
"BB_per_IP": 0.14008,
"SO_per_IP": 0.58949,
"HR_per_IP": 0.12257
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 2.122,
"predicted_H": 4.98,
"predicted_BB": 0.75,
"predicted_SO": 3.992,
"predicted_HR": 0.866,
"predicted_ERA": 3.183,
"predicted_WHIP": 0.9549
}
},
"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": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.122,
"final": 1.6596,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.98,
"final": 4.9882,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 0.75,
"final": 0.4409,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 3.992,
"final": 4.4074,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.866,
"final": 0.5091,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.183,
"final": 3.183,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.9549,
"final": 0.9549,
"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": 24,
"H": 54,
"BB": 4,
"SO": 39,
"HR": 10,
"ERA": 3.6,
"WHIP": 0.9666666666666667,
"K9": 5.85,
"HR9": 1.5,
"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.8925744289271409,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_BB": 0.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 1,
"predicted_H": 5,
"predicted_BB": 0,
"predicted_SO": 5,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "607259",
"player_name": "Nick Martinez",
"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": 0.0,
"predicted_ER": 1.0,
"predicted_H": 5.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": 1.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 1.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "TB",
"games": 155,
"wins": 95,
"losses": 60,
"win_pct": 0.6129,
"runs_scored": 707.0,
"runs_allowed": 624.0,
"run_differential": 83.0,
"run_differential_per_game": 0.5355,
"avg_runs_scored": 4.5613,
"avg_runs_allowed": 4.0258,
"offense_index": 1.013,
"defense_index": 1.1185,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 2.1,
"run_differential": 25.0
},
"available": true,
"quality_score": 0.2664
},
"opponent": {
"team": "NYY",
"games": 155,
"wins": 89,
"losses": 66,
"win_pct": 0.5742,
"runs_scored": 713.0,
"runs_allowed": 576.0,
"run_differential": 137.0,
"run_differential_per_game": 0.8839,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 3.7161,
"offense_index": 1.0216,
"defense_index": 1.2117,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 4.3,
"run_differential": 13.0
},
"available": true,
"quality_score": 0.206
},
"edges": {
"quality_edge": 0.0604,
"offense_edge": 0.013,
"opponent_offense_edge": 0.0216,
"defense_strength": 0.1185,
"opponent_defense_weakness": -0.2117,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0051,
"run_prevention": 0.9886,
"strikeout": 1.0001
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "607259",
"profile": {
"available": true,
"pitcher_id": "607259",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 661.0,
"k_percent": 14.8,
"bb_percent": 3.5,
"woba": 0.29,
"xwoba": 0.309,
"sweet_spot_percent": 34.7,
"barrel_batted_rate": 6.7,
"hard_hit_percent": 32.7,
"avg_best_speed": 75.5651,
"avg_hyper_speed": 93.0912,
"whiff_percent": 17.3,
"swing_percent": 50.8
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.2531,
"command_and_miss": -0.5614,
"regression_edge": -0.5429,
"xwoba_edge": 0.0643,
"barrel_edge": 0.1111,
"hard_hit_edge": 0.7429,
"whiff_edge": -1.1071,
"bb_edge": 1.4125,
"pitch_design_score": -0.1513
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "607259",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 81,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 87.1563062875865,
"release_spin_rate": 2197.2474223566855,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 81,
"pitch_usage": 0.0,
"release_speed": 87.1563062875865,
"release_spin_rate": 2197.2474223566855,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.1563,
"release_spin_rate": 2197.2474,
"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.1513,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.0805,
"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.0706,
"sample_weight": 1.0,
"run_prevention_factor": 1.006,
"strikeout_factor": 0.9151,
"walk_factor": 0.887,
"homer_factor": 0.9595,
"woba_minus_xwoba": -0.019,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "607259",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.006,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.006,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.887,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9595,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9151,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"Pitches": 100,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "WRONG_STARTER",
"severity": "critical",
"title": "Wrong starter identity",
"detail": "The projected MLB player ID differs from the official starter ID; performance errors are not attributable to the projected player."
},
{
"code": "FALSE_CONFIRMATION",
"severity": "critical",
"title": "Confirmed flag was false assurance",
"detail": "The server marked this starter confirmed even though a different player started."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was -4."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +3."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_TB@NYY | home | Carlos Rodón | Max Fried | False | 5.2 | 6.2 | 3 | 1 | 4 | 3 | 1/6 | 1/2 | 7/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.9475982532751095,
"WHIP": 1.1266375545851528,
"IP": 76.1,
"games_started": null,
"games_pitched": 15,
"role_avg_IP": 5.089,
"recent_avg_IP": 5.2,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0639,
"sample_weight": 1.0,
"run_prevention_factor": 0.9946,
"strikeout_factor": 1.0506,
"walk_factor": 1.059,
"homer_factor": 0.9961,
"regression_flag": "negative_pitcher_regression",
"k_percent": 26.3,
"bb_percent": 12.1,
"woba": 0.266,
"xwoba": 0.307,
"barrel_percent": 6.8,
"hard_hit_percent": 39.1,
"whiff_percent": 29.5
},
"espn_rank": {
"rank": null,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 76.1,
"season_ERA": 2.948,
"season_WHIP": 1.127,
"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": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "607074",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 15,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 7.0,
"R": 9.0,
"H": 14.0,
"BB": 10.0,
"SO": 27.0,
"HR": 3.0,
"BF": 104.0,
"Pitches": 448.0
},
"per_game": {
"IP": 5.1,
"ER": 1.4,
"R": 1.8,
"H": 2.8,
"BB": 2.0,
"SO": 5.4,
"HR": 0.6,
"BF": 20.8,
"Pitches": 89.6
},
"rates": {
"ERA": 2.4231,
"WHIP": 0.9231,
"ER_per_IP": 0.26923,
"H_per_IP": 0.53846,
"BB_per_IP": 0.38462,
"SO_per_IP": 1.03846,
"HR_per_IP": 0.11538
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.1,
"ER": 17.0,
"R": 21.0,
"H": 34.0,
"BB": 22.0,
"SO": 56.0,
"HR": 6.0,
"BF": 211.0,
"Pitches": 892.0
},
"per_game": {
"IP": 5.0,
"ER": 1.7,
"R": 2.1,
"H": 3.4,
"BB": 2.2,
"SO": 5.6,
"HR": 0.6,
"BF": 21.1,
"Pitches": 89.2
},
"rates": {
"ERA": 2.9805,
"WHIP": 1.0909,
"ER_per_IP": 0.33117,
"H_per_IP": 0.66234,
"BB_per_IP": 0.42857,
"SO_per_IP": 1.09091,
"HR_per_IP": 0.11688
}
},
"season": {
"games": 15,
"totals": {
"IP": 76.1,
"ER": 25.0,
"R": 30.0,
"H": 48.0,
"BB": 38.0,
"SO": 83.0,
"HR": 7.0,
"BF": 315.0,
"Pitches": 1342.0
},
"per_game": {
"IP": 5.0,
"ER": 1.6667,
"R": 2.0,
"H": 3.2,
"BB": 2.5333,
"SO": 5.5333,
"HR": 0.4667,
"BF": 21.0,
"Pitches": 89.4667
},
"rates": {
"ERA": 2.9476,
"WHIP": 1.1266,
"ER_per_IP": 0.32751,
"H_per_IP": 0.62882,
"BB_per_IP": 0.49782,
"SO_per_IP": 1.08734,
"HR_per_IP": 0.0917
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 1.871,
"predicted_H": 3.669,
"predicted_BB": 2.169,
"predicted_SO": 5.461,
"predicted_HR": 0.637,
"predicted_ERA": 3.1896,
"predicted_WHIP": 1.106
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4556,
"form_weight": 0.5444,
"form_reliability": 0.75,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.871,
"final": 1.4742,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 3.669,
"final": 2.4529,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.169,
"final": 1.6364,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 5.461,
"final": 6.1622,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.637,
"final": 0.8024,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.1896,
"final": 3.1896,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.106,
"final": 1.106,
"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": 17,
"H": 34,
"BB": 22,
"SO": 56,
"HR": 6,
"ERA": 2.980519480519481,
"WHIP": 1.090909090909091,
"K9": 9.818181818181818,
"HR9": 1.051948051948052,
"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.825988931091643,
"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": 1.0,
"predicted_BB": 1.0,
"predicted_SO": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 15.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.75,
"prior_weight": 0.25
}
},
{
"step": "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": 1,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "607074",
"player_name": "Carlos Rod\u00f3n",
"position": "Starter",
"team": "NYY",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 1.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYY",
"games": 155,
"wins": 89,
"losses": 66,
"win_pct": 0.5742,
"runs_scored": 713.0,
"runs_allowed": 576.0,
"run_differential": 137.0,
"run_differential_per_game": 0.8839,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 3.7161,
"offense_index": 1.0216,
"defense_index": 1.2117,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.6,
"avg_runs_allowed": 4.3,
"run_differential": 13.0
},
"available": true,
"quality_score": 0.206
},
"opponent": {
"team": "TB",
"games": 155,
"wins": 95,
"losses": 60,
"win_pct": 0.6129,
"runs_scored": 707.0,
"runs_allowed": 624.0,
"run_differential": 83.0,
"run_differential_per_game": 0.5355,
"avg_runs_scored": 4.5613,
"avg_runs_allowed": 4.0258,
"offense_index": 1.013,
"defense_index": 1.1185,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 2.1,
"run_differential": 25.0
},
"available": true,
"quality_score": 0.2664
},
"edges": {
"quality_edge": -0.0604,
"offense_edge": 0.0216,
"opponent_offense_edge": 0.013,
"defense_strength": 0.2117,
"opponent_defense_weakness": -0.1185,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 1.0034,
"run_prevention": 0.9839,
"strikeout": 0.9971
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "607074",
"profile": {
"available": true,
"pitcher_id": "607074",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 287.0,
"k_percent": 26.3,
"bb_percent": 12.1,
"woba": 0.266,
"xwoba": 0.307,
"sweet_spot_percent": 38.0,
"barrel_batted_rate": 6.8,
"hard_hit_percent": 39.1,
"avg_best_speed": 80.4358,
"avg_hyper_speed": 94.1768,
"whiff_percent": 29.5,
"swing_percent": 47.8
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.1504,
"command_and_miss": 0.3579,
"regression_edge": -1.1714,
"xwoba_edge": 0.1214,
"barrel_edge": 0.0889,
"hard_hit_edge": -0.1714,
"whiff_edge": 0.6357,
"bb_edge": -0.7375,
"pitch_design_score": 0.047
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "607074",
"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": 90.69711507632361,
"release_spin_rate": 2325.2804400378964,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 90.69711507632361,
"release_spin_rate": 2325.2804400378964,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.6971,
"release_spin_rate": 2325.2804,
"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.047,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.3359,
"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.0639,
"sample_weight": 1.0,
"run_prevention_factor": 0.9946,
"strikeout_factor": 1.0506,
"walk_factor": 1.059,
"homer_factor": 0.9961,
"woba_minus_xwoba": -0.041,
"regression_flag": "negative_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "607074",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9946,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 0.9946,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 1.059,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9961,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0506,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 1,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 19,
"Pitches": 90,
"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": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 5",
"detail": "Actual minus predicted hits was +5."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_WAS@DET | away | Riley Cornelio | Riley Cornelio | True | 4.0 | 2.2 | -4 | 2 | 0 | -2 | 5/1 | 2/3 | 7/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.21875,
"WHIP": 1.53125,
"IP": 32.0,
"games_started": null,
"games_pitched": 16,
"role_avg_IP": 2.5,
"recent_avg_IP": 2.5,
"last_start_IP": 2.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0983,
"sample_weight": 0.528,
"run_prevention_factor": 0.9916,
"strikeout_factor": 1.037,
"walk_factor": 1.0892,
"homer_factor": 1.0133,
"regression_flag": "neutral",
"k_percent": 23.9,
"bb_percent": 17.6,
"woba": 0.302,
"xwoba": 0.296,
"barrel_percent": 7.2,
"hard_hit_percent": 44.6,
"whiff_percent": 35.3
},
"espn_rank": {
"rank": 725,
"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.512,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5657,
"prior_weight": 0.4343
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "683000",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 16,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 12.0,
"ER": 3.0,
"R": 5.0,
"H": 7.0,
"BB": 5.0,
"SO": 14.0,
"HR": 1.0,
"BF": 46.0,
"Pitches": 184.0
},
"per_game": {
"IP": 2.1,
"ER": 0.6,
"R": 1.0,
"H": 1.4,
"BB": 1.0,
"SO": 2.8,
"HR": 0.2,
"BF": 9.2,
"Pitches": 36.8
},
"rates": {
"ERA": 2.25,
"WHIP": 1.0,
"ER_per_IP": 0.25,
"H_per_IP": 0.58333,
"BB_per_IP": 0.41667,
"SO_per_IP": 1.16667,
"HR_per_IP": 0.08333
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 19.1,
"ER": 4.0,
"R": 10.0,
"H": 10.0,
"BB": 13.0,
"SO": 22.0,
"HR": 1.0,
"BF": 79.0,
"Pitches": 343.0
},
"per_game": {
"IP": 2.0,
"ER": 0.4,
"R": 1.0,
"H": 1.0,
"BB": 1.3,
"SO": 2.2,
"HR": 0.1,
"BF": 7.9,
"Pitches": 34.3
},
"rates": {
"ERA": 1.8621,
"WHIP": 1.1897,
"ER_per_IP": 0.2069,
"H_per_IP": 0.51724,
"BB_per_IP": 0.67241,
"SO_per_IP": 1.13793,
"HR_per_IP": 0.05172
}
},
"season": {
"games": 16,
"totals": {
"IP": 32.0,
"ER": 15.0,
"R": 22.0,
"H": 24.0,
"BB": 25.0,
"SO": 34.0,
"HR": 2.0,
"BF": 142.0,
"Pitches": 594.0
},
"per_game": {
"IP": 2.0,
"ER": 0.9375,
"R": 1.375,
"H": 1.5,
"BB": 1.5625,
"SO": 2.125,
"HR": 0.125,
"BF": 8.875,
"Pitches": 37.125
},
"rates": {
"ERA": 4.2188,
"WHIP": 1.5312,
"ER_per_IP": 0.46875,
"H_per_IP": 0.75,
"BB_per_IP": 0.78125,
"SO_per_IP": 1.0625,
"HR_per_IP": 0.0625
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.1,
"predicted_ER": 1.229,
"predicted_H": 2.47,
"predicted_BB": 1.592,
"predicted_SO": 3.404,
"predicted_HR": 0.335,
"predicted_ERA": 3.4118,
"predicted_WHIP": 1.2524
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5335,
"form_weight": 0.4665,
"form_reliability": 0.5657,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.512,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5657,
"prior_weight": 0.4343
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 3.1,
"final": 4.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.229,
"final": 1.6403,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 2.47,
"final": 3.8197,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.592,
"final": 1.8097,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 3.404,
"final": 5.3224,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.335,
"final": 0.6898,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.4118,
"final": 3.4118,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2524,
"final": 1.2524,
"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": 19.1,
"ER": 4,
"H": 10,
"BB": 13,
"SO": 22,
"HR": 1,
"ERA": 1.8620689655172415,
"WHIP": 1.1896551724137931,
"K9": 10.241379310344827,
"HR9": 0.4655172413793104,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.8098254221068851,
"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": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 6.512,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5657,
"prior_weight": 0.4343
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.0,
"predicted_ER": 2,
"predicted_H": 5,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "683000",
"player_name": "Riley Cornelio",
"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": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 4.0,
"predicted_R": 2.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.0,
"after": 4.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.0,
"delta": -0.6667,
"percent_delta": -0.1429,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "WAS",
"games": 157,
"wins": 73,
"losses": 84,
"win_pct": 0.465,
"runs_scored": 800.0,
"runs_allowed": 795.0,
"run_differential": 5.0,
"run_differential_per_game": 0.0318,
"avg_runs_scored": 5.0955,
"avg_runs_allowed": 5.0637,
"offense_index": 1.1362,
"defense_index": 0.8857,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.8,
"run_differential": -2.0
},
"available": true,
"quality_score": 0.0091
},
"opponent": {
"team": "DET",
"games": 157,
"wins": 74,
"losses": 83,
"win_pct": 0.4713,
"runs_scored": 706.0,
"runs_allowed": 631.0,
"run_differential": 75.0,
"run_differential_per_game": 0.4777,
"avg_runs_scored": 4.4968,
"avg_runs_allowed": 4.0191,
"offense_index": 1.0027,
"defense_index": 1.1159,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.9,
"avg_runs_allowed": 4.3,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.0692
},
"edges": {
"quality_edge": -0.0601,
"offense_edge": 0.1362,
"opponent_offense_edge": 0.0027,
"defense_strength": -0.1143,
"opponent_defense_weakness": -0.1159,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9941,
"run_prevention": 1.0149,
"strikeout": 0.998
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "683000",
"profile": {
"available": true,
"pitcher_id": "683000",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 132.0,
"k_percent": 23.9,
"bb_percent": 17.6,
"woba": 0.302,
"xwoba": 0.296,
"sweet_spot_percent": 31.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 44.6,
"avg_best_speed": 76.3029,
"avg_hyper_speed": 93.9986,
"whiff_percent": 35.3,
"swing_percent": 48.1
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.1993,
"command_and_miss": 0.2186,
"regression_edge": 0.1714,
"xwoba_edge": 0.4357,
"barrel_edge": 0.0,
"hard_hit_edge": -0.9571,
"whiff_edge": 1.4643,
"bb_edge": -2.1125,
"pitch_design_score": 0.0071
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "683000",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 37,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 37,
"pitch_usage": 0.0,
"release_speed": 89.98441720106709,
"release_spin_rate": 2324.6194638196635,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 37,
"pitch_usage": 0.0,
"release_speed": 89.98441720106709,
"release_spin_rate": 2324.6194638196635,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.9844,
"release_spin_rate": 2324.6195,
"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.0071,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0508,
"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.0983,
"sample_weight": 0.528,
"run_prevention_factor": 0.9916,
"strikeout_factor": 1.037,
"walk_factor": 1.0892,
"homer_factor": 1.0133,
"woba_minus_xwoba": 0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "683000",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 0.0,
"factor": 0.9956,
"adjusted": 0
},
"predicted_H": {
"original": 1.0,
"factor": 0.9956,
"adjusted": 1
},
"predicted_BB": {
"original": 1.0,
"factor": 1.0471,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 1.007,
"adjusted": 0
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0195,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 19,
"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."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was -4."
}
],
"provenance": {
"prediction": "output/games/20260922_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"
}
} |
| 20260922 | 20260922_WAS@DET | home | Drew Anderson | Drew Anderson | True | 5.0 | 6.0 | 3 | 3 | 3 | 0 | 3/5 | 3/0 | 9/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6176470588235294,
"WHIP": 1.2941176470588236,
"IP": 102.0,
"games_started": null,
"games_pitched": 48,
"role_avg_IP": 4.567,
"recent_avg_IP": 5.133,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1654,
"sample_weight": 1.0,
"run_prevention_factor": 0.9859,
"strikeout_factor": 1.03,
"walk_factor": 1.019,
"homer_factor": 1.0043,
"regression_flag": "neutral",
"k_percent": 25.1,
"bb_percent": 10.1,
"woba": 0.317,
"xwoba": 0.301,
"barrel_percent": 8.0,
"hard_hit_percent": 37.7,
"whiff_percent": 27.1
},
"espn_rank": {
"rank": 496,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.757,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8059,
"prior_weight": 0.1941
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "623454",
"report_date": "20260922",
"season_year": 2026,
"rows_used": 48,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 25.2,
"ER": 7.0,
"R": 8.0,
"H": 19.0,
"BB": 14.0,
"SO": 22.0,
"HR": 3.0,
"BF": 107.0,
"Pitches": 428.0
},
"per_game": {
"IP": 5.0,
"ER": 1.4,
"R": 1.6,
"H": 3.8,
"BB": 2.8,
"SO": 4.4,
"HR": 0.6,
"BF": 21.4,
"Pitches": 85.6
},
"rates": {
"ERA": 2.4545,
"WHIP": 1.2857,
"ER_per_IP": 0.27273,
"H_per_IP": 0.74026,
"BB_per_IP": 0.54545,
"SO_per_IP": 0.85714,
"HR_per_IP": 0.11688
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 41.0,
"ER": 13.0,
"R": 14.0,
"H": 32.0,
"BB": 20.0,
"SO": 35.0,
"HR": 5.0,
"BF": 170.0,
"Pitches": 666.0
},
"per_game": {
"IP": 4.0,
"ER": 1.3,
"R": 1.4,
"H": 3.2,
"BB": 2.0,
"SO": 3.5,
"HR": 0.5,
"BF": 17.0,
"Pitches": 66.6
},
"rates": {
"ERA": 2.8537,
"WHIP": 1.2683,
"ER_per_IP": 0.31707,
"H_per_IP": 0.78049,
"BB_per_IP": 0.4878,
"SO_per_IP": 0.85366,
"HR_per_IP": 0.12195
}
},
"season": {
"games": 48,
"totals": {
"IP": 102.0,
"ER": 41.0,
"R": 45.0,
"H": 89.0,
"BB": 43.0,
"SO": 109.0,
"HR": 14.0,
"BF": 434.0,
"Pitches": 1699.0
},
"per_game": {
"IP": 2.0,
"ER": 0.8542,
"R": 0.9375,
"H": 1.8542,
"BB": 0.8958,
"SO": 2.2708,
"HR": 0.2917,
"BF": 9.0417,
"Pitches": 35.3958
},
"rates": {
"ERA": 3.6176,
"WHIP": 1.2941,
"ER_per_IP": 0.40196,
"H_per_IP": 0.87255,
"BB_per_IP": 0.42157,
"SO_per_IP": 1.06863,
"HR_per_IP": 0.13725
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 1.491,
"predicted_H": 3.47,
"predicted_BB": 2.017,
"predicted_SO": 3.836,
"predicted_HR": 0.541,
"predicted_ERA": 3.1689,
"predicted_WHIP": 1.2959
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.432,
"form_weight": 0.568,
"form_reliability": 0.8059,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.757,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8059,
"prior_weight": 0.1941
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 1.491,
"final": 2.1429,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 3.47,
"final": 3.267,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.017,
"final": 2.4417,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 3.836,
"final": 5.2029,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.541,
"final": 0.7393,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.1689,
"final": 3.1689,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2959,
"final": 1.2959,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 41.0,
"ER": 13,
"H": 32,
"BB": 20,
"SO": 35,
"HR": 5,
"ERA": 2.8536585365853657,
"WHIP": 1.2682926829268293,
"K9": 7.682926829268292,
"HR9": 1.0975609756097562,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.8161516646994984,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_BB": 3.0,
"predicted_SO": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 20.757,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8059,
"prior_weight": 0.1941
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "623454",
"player_name": "Drew Anderson",
"position": "Starter",
"team": "DET",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 9.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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 9.0,
"delta": 2.0,
"percent_delta": 0.2857,
"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": 9.0,
"delta": 2.0,
"percent_delta": 0.2857,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 9.0,
"delta": 2.0,
"percent_delta": 0.2857,
"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": 9.0,
"delta": 2.0,
"percent_delta": 0.2857,
"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": "DET",
"games": 157,
"wins": 74,
"losses": 83,
"win_pct": 0.4713,
"runs_scored": 706.0,
"runs_allowed": 631.0,
"run_differential": 75.0,
"run_differential_per_game": 0.4777,
"avg_runs_scored": 4.4968,
"avg_runs_allowed": 4.0191,
"offense_index": 1.0027,
"defense_index": 1.1159,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.9,
"avg_runs_allowed": 4.3,
"run_differential": 16.0
},
"available": true,
"quality_score": 0.0692
},
"opponent": {
"team": "WAS",
"games": 157,
"wins": 73,
"losses": 84,
"win_pct": 0.465,
"runs_scored": 800.0,
"runs_allowed": 795.0,
"run_differential": 5.0,
"run_differential_per_game": 0.0318,
"avg_runs_scored": 5.0955,
"avg_runs_allowed": 5.0637,
"offense_index": 1.1362,
"defense_index": 0.8857,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 4.8,
"run_differential": -2.0
},
"available": true,
"quality_score": 0.0091
},
"edges": {
"quality_edge": 0.0601,
"offense_edge": 0.0027,
"opponent_offense_edge": 0.1362,
"defense_strength": 0.1159,
"opponent_defense_weakness": 0.1143,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0004,
"run_prevention": 1.0072,
"strikeout": 0.9909
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "623454",
"profile": {
"available": true,
"pitcher_id": "623454",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 392.0,
"k_percent": 25.1,
"bb_percent": 10.1,
"woba": 0.317,
"xwoba": 0.301,
"sweet_spot_percent": 28.6,
"barrel_batted_rate": 8.0,
"hard_hit_percent": 37.7,
"avg_best_speed": 79.6961,
"avg_hyper_speed": 93.9191,
"whiff_percent": 27.1,
"swing_percent": 49.1
},
"league_medians": {
"pa": 134.5,
"k_percent": 21.9,
"bb_percent": 9.15,
"woba": 0.316,
"xwoba": 0.3113,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.595,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.05,
"swing_percent": 47.5
},
"components": {
"contact_quality": 0.0898,
"command_and_miss": 0.2607,
"regression_edge": 0.4571,
"xwoba_edge": 0.2929,
"barrel_edge": -0.1778,
"hard_hit_edge": 0.0286,
"whiff_edge": 0.2929,
"bb_edge": -0.2375,
"pitch_design_score": 0.0199
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "623454",
"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": 90.212223774853,
"release_spin_rate": 2142.1592491274655,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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": 90.212223774853,
"release_spin_rate": 2142.1592491274655,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.2122,
"release_spin_rate": 2142.1592,
"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.0199,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.1419,
"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.1654,
"sample_weight": 1.0,
"run_prevention_factor": 0.9859,
"strikeout_factor": 1.03,
"walk_factor": 1.019,
"homer_factor": 1.0043,
"woba_minus_xwoba": 0.016,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "623454",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9859,
"adjusted": 1
},
"predicted_H": {
"original": 4.0,
"factor": 0.9859,
"adjusted": 4
},
"predicted_BB": {
"original": 3.0,
"factor": 1.019,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0043,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 1.03,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 9,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"Pitches": 96,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
},
{
"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/20260922_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"
}
} |