| 20260921 | 20260921_MIN@SF | away | Zebby Matthews | Zebby Matthews | True | 5.2 | 5.0 | -2 | 1 | 5 | 4 | 2/8 | 0/0 | 7/9 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.73936170212766,
"WHIP": 1.2446808510638299,
"IP": 125.1,
"games_started": null,
"games_pitched": 22,
"role_avg_IP": 5.697,
"recent_avg_IP": 5.733,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.293,
"sample_weight": 1.0,
"run_prevention_factor": 1.0249,
"strikeout_factor": 0.9754,
"walk_factor": 0.968,
"homer_factor": 1.0997,
"regression_flag": "neutral",
"k_percent": 20.5,
"bb_percent": 7.5,
"woba": 0.325,
"xwoba": 0.324,
"barrel_percent": 10.8,
"hard_hit_percent": 42.2,
"whiff_percent": 22.2
},
"espn_rank": {
"rank": 160,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 22.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8148,
"prior_weight": 0.1852
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "805673",
"report_date": "20260921",
"season_year": 2026,
"rows_used": 22,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.2,
"ER": 11.0,
"R": 11.0,
"H": 19.0,
"BB": 8.0,
"SO": 26.0,
"HR": 4.0,
"BF": 112.0,
"Pitches": 447.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2,
"R": 2.2,
"H": 3.8,
"BB": 1.6,
"SO": 5.2,
"HR": 0.8,
"BF": 22.4,
"Pitches": 89.4
},
"rates": {
"ERA": 3.4535,
"WHIP": 0.9419,
"ER_per_IP": 0.38372,
"H_per_IP": 0.66279,
"BB_per_IP": 0.27907,
"SO_per_IP": 0.90698,
"HR_per_IP": 0.13953
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.1,
"ER": 24.0,
"R": 27.0,
"H": 44.0,
"BB": 18.0,
"SO": 49.0,
"HR": 8.0,
"BF": 225.0,
"Pitches": 907.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.7,
"H": 4.4,
"BB": 1.8,
"SO": 4.9,
"HR": 0.8,
"BF": 22.5,
"Pitches": 90.7
},
"rates": {
"ERA": 3.9036,
"WHIP": 1.1205,
"ER_per_IP": 0.43373,
"H_per_IP": 0.79518,
"BB_per_IP": 0.3253,
"SO_per_IP": 0.88554,
"HR_per_IP": 0.14458
}
},
"season": {
"games": 22,
"totals": {
"IP": 125.1,
"ER": 66.0,
"R": 71.0,
"H": 117.0,
"BB": 39.0,
"SO": 107.0,
"HR": 23.0,
"BF": 522.0,
"Pitches": 2017.0
},
"per_game": {
"IP": 5.2,
"ER": 3.0,
"R": 3.2273,
"H": 5.3182,
"BB": 1.7727,
"SO": 4.8636,
"HR": 1.0455,
"BF": 23.7273,
"Pitches": 91.6818
},
"rates": {
"ERA": 4.7394,
"WHIP": 1.2447,
"ER_per_IP": 0.5266,
"H_per_IP": 0.93351,
"BB_per_IP": 0.31117,
"SO_per_IP": 0.85372,
"HR_per_IP": 0.18351
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.519,
"predicted_H": 4.553,
"predicted_BB": 1.788,
"predicted_SO": 5.087,
"predicted_HR": 0.849,
"predicted_ERA": 4.0012,
"predicted_WHIP": 1.119
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4282,
"form_weight": 0.5718,
"form_reliability": 0.8148,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 22.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8148,
"prior_weight": 0.1852
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.519,
"final": 1.8685,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.553,
"final": 3.4597,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.788,
"final": 1.0223,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 5.087,
"final": 5.9062,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.849,
"final": 0.4854,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.0012,
"final": 4.0012,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.119,
"final": 1.119,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.1,
"ER": 24,
"H": 44,
"BB": 18,
"SO": 49,
"HR": 8,
"ERA": 3.903614457831325,
"WHIP": 1.1204819277108433,
"K9": 7.969879518072289,
"HR9": 1.3012048192771084,
"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.9309028364921675,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_BB": 0.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 22.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8148,
"prior_weight": 0.1852
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "805673",
"player_name": "Zebby Matthews",
"position": "Starter",
"team": "MIN",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIN",
"games": 156,
"wins": 73,
"losses": 83,
"win_pct": 0.4679,
"runs_scored": 712.0,
"runs_allowed": 776.0,
"run_differential": -64.0,
"run_differential_per_game": -0.4103,
"avg_runs_scored": 4.5641,
"avg_runs_allowed": 4.9744,
"offense_index": 1.0136,
"defense_index": 0.9052,
"current_streak": "W1",
"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.1124
},
"opponent": {
"team": "SF",
"games": 156,
"wins": 64,
"losses": 92,
"win_pct": 0.4103,
"runs_scored": 656.0,
"runs_allowed": 740.0,
"run_differential": -84.0,
"run_differential_per_game": -0.5385,
"avg_runs_scored": 4.2051,
"avg_runs_allowed": 4.7436,
"offense_index": 0.9339,
"defense_index": 0.9492,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 5.7,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.212
},
"edges": {
"quality_edge": 0.0996,
"offense_edge": 0.0136,
"opponent_offense_edge": -0.0661,
"defense_strength": -0.0948,
"opponent_defense_weakness": 0.0508,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0038,
"run_prevention": 0.9939,
"strikeout": 1.0083
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "805673",
"profile": {
"available": true,
"pitcher_id": "805673",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 499.0,
"k_percent": 20.5,
"bb_percent": 7.5,
"woba": 0.325,
"xwoba": 0.324,
"sweet_spot_percent": 34.4,
"barrel_batted_rate": 10.8,
"hard_hit_percent": 42.2,
"avg_best_speed": 80.9334,
"avg_hyper_speed": 94.7522,
"whiff_percent": 22.2,
"swing_percent": 47.6
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6329,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.4567,
"command_and_miss": -0.1564,
"regression_edge": 0.0286,
"xwoba_edge": -0.3714,
"barrel_edge": -0.8,
"hard_hit_edge": -0.6143,
"whiff_edge": -0.4,
"bb_edge": 0.4,
"pitch_design_score": 0.0069
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "805673",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 88,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 89.97441694218836,
"release_spin_rate": 2239.16671925691,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 89.97441694218836,
"release_spin_rate": 2239.16671925691,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.9744,
"release_spin_rate": 2239.1667,
"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.0069,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0492,
"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.293,
"sample_weight": 1.0,
"run_prevention_factor": 1.0249,
"strikeout_factor": 0.9754,
"walk_factor": 0.968,
"homer_factor": 1.0997,
"woba_minus_xwoba": 0.001,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "805673",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0249,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0249,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.968,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0997,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9754,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 2,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 19,
"Pitches": 85,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 4",
"detail": "Actual minus predicted earned runs was +4; this is the primary run-prevention error."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 6",
"detail": "Actual minus predicted hits was +6."
}
],
"provenance": {
"prediction": "output/games/20260921_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"
}
} |
| 20260921 | 20260921_MIN@SF | home | Blade Tidwell | Blade Tidwell | True | 5.1 | 3.1 | -6 | 3 | 1 | -2 | 6/3 | 2/0 | 5/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.5562499999999995,
"WHIP": 1.2,
"IP": 53.1,
"games_started": null,
"games_pitched": 16,
"role_avg_IP": 5.167,
"recent_avg_IP": 5.267,
"last_start_IP": 6.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1935,
"sample_weight": 0.788,
"run_prevention_factor": 1.0164,
"strikeout_factor": 0.9775,
"walk_factor": 1.0063,
"homer_factor": 1.0588,
"regression_flag": "neutral",
"k_percent": 18.9,
"bb_percent": 9.5,
"woba": 0.305,
"xwoba": 0.325,
"barrel_percent": 10.5,
"hard_hit_percent": 38.6,
"whiff_percent": 23.1
},
"espn_rank": {
"rank": 354,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "694918",
"report_date": "20260921",
"season_year": 2026,
"rows_used": 16,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.1,
"ER": 14.0,
"R": 15.0,
"H": 20.0,
"BB": 11.0,
"SO": 22.0,
"HR": 5.0,
"BF": 112.0,
"Pitches": 461.0
},
"per_game": {
"IP": 5.1,
"ER": 2.8,
"R": 3.0,
"H": 4.0,
"BB": 2.2,
"SO": 4.4,
"HR": 1.0,
"BF": 22.4,
"Pitches": 92.2
},
"rates": {
"ERA": 4.7848,
"WHIP": 1.1772,
"ER_per_IP": 0.53165,
"H_per_IP": 0.75949,
"BB_per_IP": 0.41772,
"SO_per_IP": 0.83544,
"HR_per_IP": 0.18987
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 45.1,
"ER": 25.0,
"R": 26.0,
"H": 38.0,
"BB": 20.0,
"SO": 36.0,
"HR": 6.0,
"BF": 194.0,
"Pitches": 792.0
},
"per_game": {
"IP": 4.2,
"ER": 2.5,
"R": 2.6,
"H": 3.8,
"BB": 2.0,
"SO": 3.6,
"HR": 0.6,
"BF": 19.4,
"Pitches": 79.2
},
"rates": {
"ERA": 4.9632,
"WHIP": 1.2794,
"ER_per_IP": 0.55147,
"H_per_IP": 0.83824,
"BB_per_IP": 0.44118,
"SO_per_IP": 0.79412,
"HR_per_IP": 0.13235
}
},
"season": {
"games": 16,
"totals": {
"IP": 53.1,
"ER": 27.0,
"R": 28.0,
"H": 43.0,
"BB": 21.0,
"SO": 42.0,
"HR": 7.0,
"BF": 222.0,
"Pitches": 902.0
},
"per_game": {
"IP": 3.1,
"ER": 1.6875,
"R": 1.75,
"H": 2.6875,
"BB": 1.3125,
"SO": 2.625,
"HR": 0.4375,
"BF": 13.875,
"Pitches": 56.375
},
"rates": {
"ERA": 4.5562,
"WHIP": 1.2,
"ER_per_IP": 0.50625,
"H_per_IP": 0.80625,
"BB_per_IP": 0.39375,
"SO_per_IP": 0.7875,
"HR_per_IP": 0.13125
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.56,
"predicted_H": 4.075,
"predicted_BB": 1.991,
"predicted_SO": 4.081,
"predicted_HR": 0.756,
"predicted_ERA": 4.7502,
"predicted_WHIP": 1.2506
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4506,
"form_weight": 0.5494,
"form_reliability": 0.7619,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 16.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7619,
"prior_weight": 0.2381
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.0,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.56,
"final": 2.7583,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.075,
"final": 4.9424,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.991,
"final": 1.9951,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.081,
"final": 4.4951,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.756,
"final": 1.3165,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.7502,
"final": 4.7502,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2506,
"final": 1.2506,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 45.1,
"ER": 25,
"H": 38,
"BB": 20,
"SO": 36,
"HR": 6,
"ERA": 4.963235294117647,
"WHIP": 1.2794117647058822,
"K9": 7.147058823529411,
"HR9": 1.1911764705882353,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 1.0540834264992547,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_BB": 2.0,
"predicted_SO": 5.0,
"predicted_HR": 2.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": "694918",
"player_name": "Blade Tidwell",
"position": "Starter",
"team": "SF",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 3.0,
"predicted_H": 6.0,
"predicted_HR": 2.0,
"predicted_IP": 5.3333,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0438,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.1,
"delta": -0.2333,
"percent_delta": -0.0437,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SF",
"games": 156,
"wins": 64,
"losses": 92,
"win_pct": 0.4103,
"runs_scored": 656.0,
"runs_allowed": 740.0,
"run_differential": -84.0,
"run_differential_per_game": -0.5385,
"avg_runs_scored": 4.2051,
"avg_runs_allowed": 4.7436,
"offense_index": 0.9339,
"defense_index": 0.9492,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 4.6,
"avg_runs_allowed": 5.7,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.212
},
"opponent": {
"team": "MIN",
"games": 156,
"wins": 73,
"losses": 83,
"win_pct": 0.4679,
"runs_scored": 712.0,
"runs_allowed": 776.0,
"run_differential": -64.0,
"run_differential_per_game": -0.4103,
"avg_runs_scored": 4.5641,
"avg_runs_allowed": 4.9744,
"offense_index": 1.0136,
"defense_index": 0.9052,
"current_streak": "W1",
"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.1124
},
"edges": {
"quality_edge": -0.0996,
"offense_edge": -0.0661,
"opponent_offense_edge": 0.0136,
"defense_strength": -0.0508,
"opponent_defense_weakness": 0.0948,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9939,
"run_prevention": 1.0122,
"strikeout": 0.9959
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "694918",
"profile": {
"available": true,
"pitcher_id": "694918",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 197.0,
"k_percent": 18.9,
"bb_percent": 9.5,
"woba": 0.305,
"xwoba": 0.325,
"sweet_spot_percent": 30.1,
"barrel_batted_rate": 10.5,
"hard_hit_percent": 38.6,
"avg_best_speed": 77.2772,
"avg_hyper_speed": 94.0983,
"whiff_percent": 23.1,
"swing_percent": 44.2
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6329,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.1876,
"command_and_miss": -0.3143,
"regression_edge": -0.5714,
"xwoba_edge": -0.4,
"barrel_edge": -0.7333,
"hard_hit_edge": -0.1,
"whiff_edge": -0.2714,
"bb_edge": -0.1,
"pitch_design_score": -0.0201
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "694918",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 86,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 89.4928593467488,
"release_spin_rate": 2451.7297481784312,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 89.4928593467488,
"release_spin_rate": 2451.7297481784312,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.4929,
"release_spin_rate": 2451.7297,
"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.0201,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.1435,
"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.1935,
"sample_weight": 0.788,
"run_prevention_factor": 1.0164,
"strikeout_factor": 0.9775,
"walk_factor": 1.0063,
"homer_factor": 1.0588,
"woba_minus_xwoba": -0.02,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "694918",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0129,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 1.0129,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.005,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0463,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9823,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.1,
"predicted_H": 6,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 24,
"Pitches": 105,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -6 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260921_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"
}
} |
| 20260921 | 20260921_TOR@BAL | away | Trey Yesavage | Trey Yesavage | True | 5.0 | 2.0 | -9 | 3 | 1 | -2 | 4/1 | 1/0 | 4/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6512455516014235,
"WHIP": 1.1423487544483986,
"IP": 93.2,
"games_started": null,
"games_pitched": 18,
"role_avg_IP": 5.204,
"recent_avg_IP": 4.067,
"last_start_IP": 2.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.3159,
"sample_weight": 1.0,
"run_prevention_factor": 0.9731,
"strikeout_factor": 1.0377,
"walk_factor": 1.056,
"homer_factor": 0.9359,
"regression_flag": "neutral",
"k_percent": 23.6,
"bb_percent": 11.9,
"woba": 0.28,
"xwoba": 0.285,
"barrel_percent": 6.1,
"hard_hit_percent": 34.0,
"whiff_percent": 30.0
},
"espn_rank": {
"rank": 87,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "702056",
"report_date": "20260921",
"season_year": 2026,
"rows_used": 18,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 20.1,
"ER": 11.0,
"R": 11.0,
"H": 14.0,
"BB": 14.0,
"SO": 23.0,
"HR": 3.0,
"BF": 88.0,
"Pitches": 371.0
},
"per_game": {
"IP": 4.0,
"ER": 2.2,
"R": 2.2,
"H": 2.8,
"BB": 2.8,
"SO": 4.6,
"HR": 0.6,
"BF": 17.6,
"Pitches": 74.2
},
"rates": {
"ERA": 4.8689,
"WHIP": 1.377,
"ER_per_IP": 0.54098,
"H_per_IP": 0.68852,
"BB_per_IP": 0.68852,
"SO_per_IP": 1.13115,
"HR_per_IP": 0.14754
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 51.0,
"ER": 23.0,
"R": 24.0,
"H": 30.0,
"BB": 27.0,
"SO": 47.0,
"HR": 8.0,
"BF": 213.0,
"Pitches": 842.0
},
"per_game": {
"IP": 5.0,
"ER": 2.3,
"R": 2.4,
"H": 3.0,
"BB": 2.7,
"SO": 4.7,
"HR": 0.8,
"BF": 21.3,
"Pitches": 84.2
},
"rates": {
"ERA": 4.0588,
"WHIP": 1.1176,
"ER_per_IP": 0.45098,
"H_per_IP": 0.58824,
"BB_per_IP": 0.52941,
"SO_per_IP": 0.92157,
"HR_per_IP": 0.15686
}
},
"season": {
"games": 18,
"totals": {
"IP": 93.2,
"ER": 38.0,
"R": 39.0,
"H": 61.0,
"BB": 46.0,
"SO": 91.0,
"HR": 10.0,
"BF": 386.0,
"Pitches": 1549.0
},
"per_game": {
"IP": 5.1,
"ER": 2.1111,
"R": 2.1667,
"H": 3.3889,
"BB": 2.5556,
"SO": 5.0556,
"HR": 0.5556,
"BF": 21.4444,
"Pitches": 86.0556
},
"rates": {
"ERA": 3.6512,
"WHIP": 1.1423,
"ER_per_IP": 0.40569,
"H_per_IP": 0.65125,
"BB_per_IP": 0.4911,
"SO_per_IP": 0.97153,
"HR_per_IP": 0.10676
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.295,
"predicted_H": 3.377,
"predicted_BB": 2.567,
"predicted_SO": 4.731,
"predicted_HR": 0.677,
"predicted_ERA": 4.3949,
"predicted_WHIP": 1.2648
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4419,
"form_weight": 0.5581,
"form_reliability": 0.7826,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.295,
"final": 2.6065,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.377,
"final": 3.6523,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.567,
"final": 1.8746,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.731,
"final": 4.408,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.677,
"final": 0.8197,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.3949,
"final": 4.3949,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2648,
"final": 1.2648,
"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.0,
"ER": 23,
"H": 30,
"BB": 27,
"SO": 47,
"HR": 8,
"ERA": 4.0588235294117645,
"WHIP": 1.1176470588235292,
"K9": 8.294117647058822,
"HR9": 1.4117647058823528,
"games_pitched": 10,
"quality_starts": 5,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-08-04T00:00:00"
},
"recent_form_boost": 0.9482929853227842,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_BB": 1.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 18.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7826,
"prior_weight": 0.2174
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "702056",
"player_name": "Trey Yesavage",
"position": "Starter",
"team": "TOR",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 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": "TOR",
"games": 156,
"wins": 77,
"losses": 79,
"win_pct": 0.4936,
"runs_scored": 629.0,
"runs_allowed": 671.0,
"run_differential": -42.0,
"run_differential_per_game": -0.2692,
"avg_runs_scored": 4.0321,
"avg_runs_allowed": 4.3013,
"offense_index": 0.8957,
"defense_index": 1.0465,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.5,
"run_differential": -5.0
},
"available": true,
"quality_score": -0.0733
},
"opponent": {
"team": "BAL",
"games": 156,
"wins": 75,
"losses": 81,
"win_pct": 0.4808,
"runs_scored": 693.0,
"runs_allowed": 724.0,
"run_differential": -31.0,
"run_differential_per_game": -0.1987,
"avg_runs_scored": 4.4423,
"avg_runs_allowed": 4.641,
"offense_index": 0.9869,
"defense_index": 0.9699,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.1,
"run_differential": 0.0
},
"available": true,
"quality_score": -0.0406
},
"edges": {
"quality_edge": -0.0327,
"offense_edge": -0.1043,
"opponent_offense_edge": -0.0131,
"defense_strength": 0.0465,
"opponent_defense_weakness": 0.0301,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0006,
"run_prevention": 0.9949,
"strikeout": 1.0001
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "702056",
"profile": {
"available": true,
"pitcher_id": "702056",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 356.0,
"k_percent": 23.6,
"bb_percent": 11.9,
"woba": 0.28,
"xwoba": 0.285,
"sweet_spot_percent": 36.4,
"barrel_batted_rate": 6.1,
"hard_hit_percent": 34.0,
"avg_best_speed": 78.1032,
"avg_hyper_speed": 93.3477,
"whiff_percent": 30.0,
"swing_percent": 47.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6329,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.4951,
"command_and_miss": 0.2129,
"regression_edge": -0.1429,
"xwoba_edge": 0.7429,
"barrel_edge": 0.2444,
"hard_hit_edge": 0.5571,
"whiff_edge": 0.7143,
"bb_edge": -0.7,
"pitch_design_score": -0.0299
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "702056",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 88,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 89.31756719718713,
"release_spin_rate": 2004.5012215502159,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 88,
"pitch_usage": 0.0,
"release_speed": 89.31756719718713,
"release_spin_rate": 2004.5012215502159,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.3176,
"release_spin_rate": 2004.5012,
"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.0299,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2136,
"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.3159,
"sample_weight": 1.0,
"run_prevention_factor": 0.9731,
"strikeout_factor": 1.0377,
"walk_factor": 1.056,
"homer_factor": 0.9359,
"woba_minus_xwoba": -0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "702056",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9731,
"adjusted": 2
},
"predicted_H": {
"original": 3.0,
"factor": 0.9731,
"adjusted": 3
},
"predicted_BB": {
"original": 3.0,
"factor": 1.056,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9359,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0377,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 20,
"Pitches": 79,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WORKLOAD_MISS",
"severity": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -9 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260921_TOR@BAL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260921 | 20260921_TOR@BAL | home | Shane Baz | Shane Baz | True | 5.2 | 6.2 | 3 | 4 | 3 | -1 | 7/5 | 2/3 | 4/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.109826589595376,
"WHIP": 1.3526011560693643,
"IP": 173.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.767,
"recent_avg_IP": 5.467,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1425,
"sample_weight": 1.0,
"run_prevention_factor": 1.0121,
"strikeout_factor": 0.9737,
"walk_factor": 0.98,
"homer_factor": 1.0215,
"regression_flag": "neutral",
"k_percent": 20.5,
"bb_percent": 8.1,
"woba": 0.318,
"xwoba": 0.315,
"barrel_percent": 6.9,
"hard_hit_percent": 42.0,
"whiff_percent": 21.9
},
"espn_rank": {
"rank": 124,
"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": "669358",
"report_date": "20260921",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.1,
"ER": 14.0,
"R": 14.0,
"H": 27.0,
"BB": 11.0,
"SO": 20.0,
"HR": 4.0,
"BF": 119.0,
"Pitches": 443.0
},
"per_game": {
"IP": 5.1,
"ER": 2.8,
"R": 2.8,
"H": 5.4,
"BB": 2.2,
"SO": 4.0,
"HR": 0.8,
"BF": 23.8,
"Pitches": 88.6
},
"rates": {
"ERA": 4.6098,
"WHIP": 1.3902,
"ER_per_IP": 0.5122,
"H_per_IP": 0.9878,
"BB_per_IP": 0.40244,
"SO_per_IP": 0.73171,
"HR_per_IP": 0.14634
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.1,
"ER": 26.0,
"R": 27.0,
"H": 55.0,
"BB": 18.0,
"SO": 47.0,
"HR": 6.0,
"BF": 235.0,
"Pitches": 894.0
},
"per_game": {
"IP": 5.2,
"ER": 2.6,
"R": 2.7,
"H": 5.5,
"BB": 1.8,
"SO": 4.7,
"HR": 0.6,
"BF": 23.5,
"Pitches": 89.4
},
"rates": {
"ERA": 4.2289,
"WHIP": 1.3193,
"ER_per_IP": 0.46988,
"H_per_IP": 0.99398,
"BB_per_IP": 0.3253,
"SO_per_IP": 0.8494,
"HR_per_IP": 0.10843
}
},
"season": {
"games": 30,
"totals": {
"IP": 173.0,
"ER": 79.0,
"R": 89.0,
"H": 174.0,
"BB": 60.0,
"SO": 152.0,
"HR": 15.0,
"BF": 742.0,
"Pitches": 2819.0
},
"per_game": {
"IP": 5.2,
"ER": 2.6333,
"R": 2.9667,
"H": 5.8,
"BB": 2.0,
"SO": 5.0667,
"HR": 0.5,
"BF": 24.7333,
"Pitches": 93.9667
},
"rates": {
"ERA": 4.1098,
"WHIP": 1.3526,
"ER_per_IP": 0.45665,
"H_per_IP": 1.00578,
"BB_per_IP": 0.34682,
"SO_per_IP": 0.87861,
"HR_per_IP": 0.08671
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.711,
"predicted_H": 5.492,
"predicted_BB": 2.027,
"predicted_SO": 4.55,
"predicted_HR": 0.693,
"predicted_ERA": 4.4064,
"predicted_WHIP": 1.3577
}
},
"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": 4.0,
"form": 2.711,
"final": 3.24,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 5.492,
"final": 6.1108,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.027,
"final": 2.0159,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.55,
"final": 4.3243,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.693,
"final": 0.819,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4064,
"final": 4.4064,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3577,
"final": 1.3577,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 55.1,
"ER": 26,
"H": 55,
"BB": 18,
"SO": 47,
"HR": 6,
"ERA": 4.228915662650602,
"WHIP": 1.3192771084337347,
"K9": 7.644578313253011,
"HR9": 0.9759036144578311,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-15T00:00:00"
},
"recent_form_boost": 0.9724691015524084,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_BB": 2.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "669358",
"player_name": "Shane Baz",
"position": "Starter",
"team": "BAL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 5.6667,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_R": 4.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": "BAL",
"games": 156,
"wins": 75,
"losses": 81,
"win_pct": 0.4808,
"runs_scored": 693.0,
"runs_allowed": 724.0,
"run_differential": -31.0,
"run_differential_per_game": -0.1987,
"avg_runs_scored": 4.4423,
"avg_runs_allowed": 4.641,
"offense_index": 0.9869,
"defense_index": 0.9699,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.1,
"avg_runs_allowed": 4.1,
"run_differential": 0.0
},
"available": true,
"quality_score": -0.0406
},
"opponent": {
"team": "TOR",
"games": 156,
"wins": 77,
"losses": 79,
"win_pct": 0.4936,
"runs_scored": 629.0,
"runs_allowed": 671.0,
"run_differential": -42.0,
"run_differential_per_game": -0.2692,
"avg_runs_scored": 4.0321,
"avg_runs_allowed": 4.3013,
"offense_index": 0.8957,
"defense_index": 1.0465,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.5,
"run_differential": -5.0
},
"available": true,
"quality_score": -0.0733
},
"edges": {
"quality_edge": 0.0327,
"offense_edge": -0.0131,
"opponent_offense_edge": -0.1043,
"defense_strength": -0.0301,
"opponent_defense_weakness": -0.0465,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0046,
"run_prevention": 0.9847,
"strikeout": 1.0093
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "669358",
"profile": {
"available": true,
"pitcher_id": "669358",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 694.0,
"k_percent": 20.5,
"bb_percent": 8.1,
"woba": 0.318,
"xwoba": 0.315,
"sweet_spot_percent": 35.5,
"barrel_batted_rate": 6.9,
"hard_hit_percent": 42.0,
"avg_best_speed": 80.2761,
"avg_hyper_speed": 94.4624,
"whiff_percent": 21.9,
"swing_percent": 48.2
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6329,
"avg_hyper_speed": 93.8957,
"whiff_percent": 25.0,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.183,
"command_and_miss": -0.2014,
"regression_edge": 0.0857,
"xwoba_edge": -0.1143,
"barrel_edge": 0.0667,
"hard_hit_edge": -0.5857,
"whiff_edge": -0.4429,
"bb_edge": 0.25,
"pitch_design_score": 0.048
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "669358",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 95,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 95,
"pitch_usage": 0.0,
"release_speed": 90.70819900179096,
"release_spin_rate": 2403.1313618200516,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 95,
"pitch_usage": 0.0,
"release_speed": 90.70819900179096,
"release_spin_rate": 2403.1313618200516,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"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.7082,
"release_spin_rate": 2403.1314,
"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.048,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.3427,
"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.1425,
"sample_weight": 1.0,
"run_prevention_factor": 1.0121,
"strikeout_factor": 0.9737,
"walk_factor": 0.98,
"homer_factor": 1.0215,
"woba_minus_xwoba": 0.003,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "669358",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0121,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0121,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.98,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0215,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9737,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 7,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 2,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 26,
"Pitches": 109,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "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/20260921_TOR@BAL.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260921 | 20260921_WAS@DET | away | DJ Herz | DJ Herz | True | 2.1 | 4.0 | 5 | 1 | 4 | 3 | 4/5 | 0/2 | 7/4 | Last 10 before this game (0 available)No pregame recent-game rows were available. {
"model_context": {
"embedded_season": {
"ERA": null,
"WHIP": null,
"IP": null,
"games_started": null,
"games_pitched": null,
"role_avg_IP": null,
"recent_avg_IP": null,
"last_start_IP": null,
"projection_source": "league_average_stable_fallback"
},
"savant": {
"quality_score": null,
"sample_weight": null,
"run_prevention_factor": null,
"strikeout_factor": null,
"walk_factor": null,
"homer_factor": null,
"regression_flag": null,
"k_percent": null,
"bb_percent": null,
"woba": null,
"xwoba": null,
"barrel_percent": null,
"hard_hit_percent": null,
"whiff_percent": null
},
"espn_rank": {
"rank": null,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 0.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.0,
"prior_weight": 1.0
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "687792",
"report_date": "20260921",
"season_year": 2026,
"rows_used": 0,
"reference_playing_time": 0.1,
"windows": {
"last_5": {
"games": 0,
"totals": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"per_game": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"rates": {
"ERA": null,
"WHIP": null,
"ER_per_IP": null,
"H_per_IP": null,
"BB_per_IP": null,
"SO_per_IP": null,
"HR_per_IP": null
}
},
"last_10": {
"games": 0,
"totals": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"per_game": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"rates": {
"ERA": null,
"WHIP": null,
"ER_per_IP": null,
"H_per_IP": null,
"BB_per_IP": null,
"SO_per_IP": null,
"HR_per_IP": null
}
},
"season": {
"games": 0,
"totals": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"per_game": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"rates": {
"ERA": null,
"WHIP": null,
"ER_per_IP": null,
"H_per_IP": null,
"BB_per_IP": null,
"SO_per_IP": null,
"HR_per_IP": null
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 0.1,
"predicted_ER": 0.17,
"predicted_H": 0.327,
"predicted_BB": 0.125,
"predicted_SO": 0.312,
"predicted_HR": 0.05,
"predicted_ERA": 4.5933,
"predicted_WHIP": 1.3576
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.7725,
"form_weight": 0.2275,
"form_reliability": 0.0,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 0.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.0,
"prior_weight": 1.0
},
"applied_metrics": {
"predicted_IP": {
"model": 0.1,
"form": 0.1,
"final": 0.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 0.17,
"final": 0.8112,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 0.327,
"final": 3.1644,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 0.125,
"final": 0.0284,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 0.312,
"final": 5.4785,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.05,
"final": 0.0114,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5933,
"final": 4.5933,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3576,
"final": 1.3576,
"source": "form_only"
}
}
},
"recent_form_analysis": null,
"recent_form_boost": null,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 0.1,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_BB": 0.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 0.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.0,
"prior_weight": 1.0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "687792",
"player_name": "DJ Herz",
"position": "Starter",
"team": "WAS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 0.1,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 2.1,
"predicted_R": 1.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 0.1,
"after": 2.1,
"delta": 2.0,
"percent_delta": 20.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 0.1,
"after": 2.1,
"delta": 2.0,
"percent_delta": 20.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 0.1,
"after": 2.1,
"delta": 2.0,
"percent_delta": 20.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_IP",
"before": 0.1,
"after": 2.1,
"delta": 2.0,
"percent_delta": 20.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "WAS",
"games": 156,
"wins": 73,
"losses": 83,
"win_pct": 0.4679,
"runs_scored": 798.0,
"runs_allowed": 786.0,
"run_differential": 12.0,
"run_differential_per_game": 0.0769,
"avg_runs_scored": 5.1154,
"avg_runs_allowed": 5.0385,
"offense_index": 1.1355,
"defense_index": 0.8941,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.4,
"run_differential": 4.0
},
"available": true,
"quality_score": 0.0171
},
"opponent": {
"team": "DET",
"games": 156,
"wins": 73,
"losses": 83,
"win_pct": 0.4679,
"runs_scored": 697.0,
"runs_allowed": 629.0,
"run_differential": 68.0,
"run_differential_per_game": 0.4359,
"avg_runs_scored": 4.4679,
"avg_runs_allowed": 4.0321,
"offense_index": 0.9917,
"defense_index": 1.1173,
"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.0609
},
"edges": {
"quality_edge": -0.0438,
"offense_edge": 0.1355,
"opponent_offense_edge": -0.0083,
"defense_strength": -0.1059,
"opponent_defense_weakness": -0.1173,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9954,
"run_prevention": 1.0115,
"strikeout": 0.9993
}
},
"simulation_box_score_stats": {
"predicted_IP": 2.1,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 0,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 11,
"Pitches": 53,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "NO_PRIOR_HISTORY",
"severity": "critical",
"title": "No prior appearances in the source dataset",
"detail": "The model had no row-level pitching history before this game; any precise box-score line should carry a strong uncertainty warning."
},
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was +3."
}
],
"provenance": {
"prediction": "output/games/20260921_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"
}
} |
| 20260921 | 20260921_WAS@DET | home | River Ryan | River Ryan | True | 0.2 | 3.0 | 7 | 1 | 0 | -1 | 5/2 | 2/1 | 2/3 | Last 10 before this game (0 available)No pregame recent-game rows were available. {
"model_context": {
"embedded_season": {
"ERA": null,
"WHIP": null,
"IP": null,
"games_started": null,
"games_pitched": null,
"role_avg_IP": null,
"recent_avg_IP": null,
"last_start_IP": null,
"projection_source": "league_average_stable_fallback"
},
"savant": {
"quality_score": null,
"sample_weight": null,
"run_prevention_factor": null,
"strikeout_factor": null,
"walk_factor": null,
"homer_factor": null,
"regression_flag": null,
"k_percent": null,
"bb_percent": null,
"woba": null,
"xwoba": null,
"barrel_percent": null,
"hard_hit_percent": null,
"whiff_percent": null
},
"espn_rank": {
"rank": null,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 0.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.0,
"prior_weight": 1.0
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "689981",
"report_date": "20260921",
"season_year": 2026,
"rows_used": 0,
"reference_playing_time": 0.1,
"windows": {
"last_5": {
"games": 0,
"totals": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"per_game": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"rates": {
"ERA": null,
"WHIP": null,
"ER_per_IP": null,
"H_per_IP": null,
"BB_per_IP": null,
"SO_per_IP": null,
"HR_per_IP": null
}
},
"last_10": {
"games": 0,
"totals": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"per_game": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"rates": {
"ERA": null,
"WHIP": null,
"ER_per_IP": null,
"H_per_IP": null,
"BB_per_IP": null,
"SO_per_IP": null,
"HR_per_IP": null
}
},
"season": {
"games": 0,
"totals": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"per_game": {
"IP": 0.0,
"ER": 0.0,
"R": 0.0,
"H": 0.0,
"BB": 0.0,
"SO": 0.0,
"HR": 0.0,
"BF": 0.0,
"Pitches": 0.0
},
"rates": {
"ERA": null,
"WHIP": null,
"ER_per_IP": null,
"H_per_IP": null,
"BB_per_IP": null,
"SO_per_IP": null,
"HR_per_IP": null
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 0.1,
"predicted_ER": 0.17,
"predicted_H": 0.327,
"predicted_BB": 0.125,
"predicted_SO": 0.312,
"predicted_HR": 0.05,
"predicted_ERA": 4.5933,
"predicted_WHIP": 1.3576
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.7725,
"form_weight": 0.2275,
"form_reliability": 0.0,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 0.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.0,
"prior_weight": 1.0
},
"applied_metrics": {
"predicted_IP": {
"model": 0.1,
"form": 0.1,
"final": 0.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 0.17,
"final": 0.8112,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 0.327,
"final": 3.9369,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 0.125,
"final": 1.5734,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 0.312,
"final": 3.9335,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.05,
"final": 0.0114,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5933,
"final": 4.5933,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3576,
"final": 1.3576,
"source": "form_only"
}
}
},
"recent_form_analysis": null,
"recent_form_boost": null,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 0.1,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 0.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.0,
"prior_weight": 1.0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "689981",
"player_name": "River Ryan",
"position": "Starter",
"team": "DET",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 0.1,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 0.2,
"predicted_R": 1.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": 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": 0.1,
"after": 0.2,
"delta": 0.1,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 2.0,
"delta": -3.0,
"percent_delta": -0.6,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_IP",
"before": 0.1,
"after": 0.2,
"delta": 0.1,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 2.0,
"delta": -3.0,
"percent_delta": -0.6,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 0.1,
"after": 0.2,
"delta": 0.1,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 2.0,
"delta": -3.0,
"percent_delta": -0.6,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 1,
"deboosted_metrics": 1,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_IP",
"before": 0.1,
"after": 0.2,
"delta": 0.1,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 2.0,
"delta": -3.0,
"percent_delta": -0.6,
"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": "DET",
"games": 156,
"wins": 73,
"losses": 83,
"win_pct": 0.4679,
"runs_scored": 697.0,
"runs_allowed": 629.0,
"run_differential": 68.0,
"run_differential_per_game": 0.4359,
"avg_runs_scored": 4.4679,
"avg_runs_allowed": 4.0321,
"offense_index": 0.9917,
"defense_index": 1.1173,
"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.0609
},
"opponent": {
"team": "WAS",
"games": 156,
"wins": 73,
"losses": 83,
"win_pct": 0.4679,
"runs_scored": 798.0,
"runs_allowed": 786.0,
"run_differential": 12.0,
"run_differential_per_game": 0.0769,
"avg_runs_scored": 5.1154,
"avg_runs_allowed": 5.0385,
"offense_index": 1.1355,
"defense_index": 0.8941,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.4,
"run_differential": 4.0
},
"available": true,
"quality_score": 0.0171
},
"edges": {
"quality_edge": 0.0438,
"offense_edge": -0.0083,
"opponent_offense_edge": 0.1355,
"defense_strength": 0.1173,
"opponent_defense_weakness": 0.1059,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9999,
"run_prevention": 1.0078,
"strikeout": 0.9905
}
},
"simulation_box_score_stats": {
"predicted_IP": 0.2,
"predicted_H": 5,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 2,
"predicted_SO": 2,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 9,
"Pitches": 31,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "NO_PRIOR_HISTORY",
"severity": "critical",
"title": "No prior appearances in the source dataset",
"detail": "The model had no row-level pitching history before this game; any precise box-score line should carry a strong uncertainty warning."
},
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "WORKLOAD_MISS",
"severity": "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/20260921_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"
}
} |