| 20260924 | 20260924_ARI@COL | away | Eduardo Rodriguez | Eduardo Rodriguez | True | 5.2 | 6.0 | 1 | 3 | 2 | -1 | 9/9 | 1/0 | 7/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 2.8911070780399277,
"WHIP": 1.2304900181488203,
"IP": 183.2,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.925,
"recent_avg_IP": 5.733,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1048,
"sample_weight": 1.0,
"run_prevention_factor": 1.0089,
"strikeout_factor": 0.9611,
"walk_factor": 0.98,
"homer_factor": 0.9833,
"regression_flag": "neutral",
"k_percent": 18.4,
"bb_percent": 8.1,
"woba": 0.298,
"xwoba": 0.318,
"barrel_percent": 7.5,
"hard_hit_percent": 33.0,
"whiff_percent": 21.9
},
"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": "593958",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.2,
"ER": 14.0,
"R": 17.0,
"H": 26.0,
"BB": 13.0,
"SO": 30.0,
"HR": 4.0,
"BF": 126.0,
"Pitches": 505.0
},
"per_game": {
"IP": 5.2,
"ER": 2.8,
"R": 3.4,
"H": 5.2,
"BB": 2.6,
"SO": 6.0,
"HR": 0.8,
"BF": 25.2,
"Pitches": 101.0
},
"rates": {
"ERA": 4.3953,
"WHIP": 1.3605,
"ER_per_IP": 0.48837,
"H_per_IP": 0.90698,
"BB_per_IP": 0.45349,
"SO_per_IP": 1.04651,
"HR_per_IP": 0.13953
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.0,
"ER": 23.0,
"R": 28.0,
"H": 56.0,
"BB": 18.0,
"SO": 54.0,
"HR": 5.0,
"BF": 256.0,
"Pitches": 1022.0
},
"per_game": {
"IP": 6.0,
"ER": 2.3,
"R": 2.8,
"H": 5.6,
"BB": 1.8,
"SO": 5.4,
"HR": 0.5,
"BF": 25.6,
"Pitches": 102.2
},
"rates": {
"ERA": 3.3934,
"WHIP": 1.2131,
"ER_per_IP": 0.37705,
"H_per_IP": 0.91803,
"BB_per_IP": 0.29508,
"SO_per_IP": 0.88525,
"HR_per_IP": 0.08197
}
},
"season": {
"games": 31,
"totals": {
"IP": 183.2,
"ER": 59.0,
"R": 66.0,
"H": 164.0,
"BB": 62.0,
"SO": 140.0,
"HR": 18.0,
"BF": 761.0,
"Pitches": 2975.0
},
"per_game": {
"IP": 6.0,
"ER": 1.9032,
"R": 2.129,
"H": 5.2903,
"BB": 2.0,
"SO": 4.5161,
"HR": 0.5806,
"BF": 24.5484,
"Pitches": 95.9677
},
"rates": {
"ERA": 2.8911,
"WHIP": 1.2305,
"ER_per_IP": 0.32123,
"H_per_IP": 0.89292,
"BB_per_IP": 0.33757,
"SO_per_IP": 0.76225,
"HR_per_IP": 0.098
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.499,
"predicted_H": 5.349,
"predicted_BB": 2.184,
"predicted_SO": 5.439,
"predicted_HR": 0.677,
"predicted_ERA": 3.8621,
"predicted_WHIP": 1.2934
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.499,
"final": 3.1124,
"source": "model_form_blend"
},
"predicted_H": {
"model": 9.0,
"form": 5.349,
"final": 6.8411,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.184,
"final": 1.7001,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 5.439,
"final": 5.6683,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.677,
"final": 0.4003,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.8621,
"final": 3.8621,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2934,
"final": 1.2934,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 61.0,
"ER": 23,
"H": 56,
"BB": 18,
"SO": 54,
"HR": 5,
"ERA": 3.39344262295082,
"WHIP": 1.213114754098361,
"K9": 7.9672131147541,
"HR9": 0.7377049180327869,
"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-18T00:00:00"
},
"recent_form_boost": 0.8749678331756804,
"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": 9.0,
"predicted_BB": 1.0,
"predicted_SO": 6.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
},
{
"step": "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": 9,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "593958",
"player_name": "Eduardo Rodriguez",
"position": "Starter",
"team": "ARI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 9.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 9.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 3.0,
"delta": -1.0,
"percent_delta": -0.25,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 0,
"deboosted_metrics": 2,
"better_metrics": 1,
"worse_metrics": 1,
"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
}
},
"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": 9.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.2,
"after": 5.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 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": 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": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"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": 6.0,
"after": 7.0,
"delta": 1.0,
"percent_delta": 0.1667,
"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": "ARI",
"games": 158,
"wins": 84,
"losses": 74,
"win_pct": 0.5316,
"runs_scored": 705.0,
"runs_allowed": 699.0,
"run_differential": 6.0,
"run_differential_per_game": 0.038,
"avg_runs_scored": 4.462,
"avg_runs_allowed": 4.4241,
"offense_index": 0.9946,
"defense_index": 1.0141,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.9,
"run_differential": -1.0
},
"available": true,
"quality_score": 0.0315
},
"opponent": {
"team": "COL",
"games": 158,
"wins": 57,
"losses": 101,
"win_pct": 0.3608,
"runs_scored": 732.0,
"runs_allowed": 916.0,
"run_differential": -184.0,
"run_differential_per_game": -1.1646,
"avg_runs_scored": 4.6329,
"avg_runs_allowed": 5.7975,
"offense_index": 1.0326,
"defense_index": 0.7739,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 5.9,
"run_differential": -22.0
},
"available": true,
"quality_score": -0.3661
},
"edges": {
"quality_edge": 0.3976,
"offense_edge": -0.0054,
"opponent_offense_edge": 0.0326,
"defense_strength": 0.0141,
"opponent_defense_weakness": 0.2261,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.015,
"run_prevention": 0.9839,
"strikeout": 1.0093
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "593958",
"profile": {
"available": true,
"pitcher_id": "593958",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 732.0,
"k_percent": 18.4,
"bb_percent": 8.1,
"woba": 0.298,
"xwoba": 0.318,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.5,
"hard_hit_percent": 33.0,
"avg_best_speed": 76.0784,
"avg_hyper_speed": 93.2678,
"whiff_percent": 21.9,
"swing_percent": 48.4
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0858,
"command_and_miss": -0.3414,
"regression_edge": -0.5714,
"xwoba_edge": -0.2,
"barrel_edge": -0.0667,
"hard_hit_edge": 0.7,
"whiff_edge": -0.4571,
"bb_edge": 0.25,
"pitch_design_score": -0.0867
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "593958",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 100,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 100,
"pitch_usage": 0.0,
"release_speed": 88.31577015688,
"release_spin_rate": 2173.932775026911,
"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": 100,
"pitch_usage": 0.0,
"release_speed": 88.31577015688,
"release_spin_rate": 2173.932775026911,
"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.3158,
"release_spin_rate": 2173.9328,
"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.0867,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.6192,
"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.1048,
"sample_weight": 1.0,
"run_prevention_factor": 1.0089,
"strikeout_factor": 0.9611,
"walk_factor": 0.98,
"homer_factor": 0.9833,
"woba_minus_xwoba": -0.02,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "593958",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0089,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0089,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.98,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9833,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9611,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 9,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 27,
"Pitches": 114,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_ARI@COL | home | Tanner Gordon | Tanner Gordon | True | 4.1 | 3.1 | -3 | 3 | 10 | 7 | 7/12 | 1/4 | 1/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 6.009966777408638,
"WHIP": 1.5548172757475083,
"IP": 100.1,
"games_started": null,
"games_pitched": 23,
"role_avg_IP": 4.727,
"recent_avg_IP": 4.733,
"last_start_IP": 3.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3683,
"sample_weight": 1.0,
"run_prevention_factor": 1.0313,
"strikeout_factor": 0.9663,
"walk_factor": 0.908,
"homer_factor": 1.105,
"regression_flag": "positive_pitcher_regression",
"k_percent": 18.8,
"bb_percent": 4.5,
"woba": 0.39,
"xwoba": 0.335,
"barrel_percent": 10.5,
"hard_hit_percent": 42.4,
"whiff_percent": 22.4
},
"espn_rank": {
"rank": 296,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "685299",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 23,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 23.2,
"ER": 18.0,
"R": 18.0,
"H": 37.0,
"BB": 5.0,
"SO": 20.0,
"HR": 3.0,
"BF": 110.0,
"Pitches": 403.0
},
"per_game": {
"IP": 4.2,
"ER": 3.6,
"R": 3.6,
"H": 7.4,
"BB": 1.0,
"SO": 4.0,
"HR": 0.6,
"BF": 22.0,
"Pitches": 80.6
},
"rates": {
"ERA": 6.8451,
"WHIP": 1.7746,
"ER_per_IP": 0.76056,
"H_per_IP": 1.56338,
"BB_per_IP": 0.21127,
"SO_per_IP": 0.84507,
"HR_per_IP": 0.12676
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 44.1,
"ER": 30.0,
"R": 32.0,
"H": 63.0,
"BB": 8.0,
"SO": 35.0,
"HR": 6.0,
"BF": 200.0,
"Pitches": 689.0
},
"per_game": {
"IP": 4.1,
"ER": 3.0,
"R": 3.2,
"H": 6.3,
"BB": 0.8,
"SO": 3.5,
"HR": 0.6,
"BF": 20.0,
"Pitches": 68.9
},
"rates": {
"ERA": 6.0902,
"WHIP": 1.6015,
"ER_per_IP": 0.67669,
"H_per_IP": 1.42105,
"BB_per_IP": 0.18045,
"SO_per_IP": 0.78947,
"HR_per_IP": 0.13534
}
},
"season": {
"games": 23,
"totals": {
"IP": 100.1,
"ER": 67.0,
"R": 69.0,
"H": 136.0,
"BB": 20.0,
"SO": 84.0,
"HR": 19.0,
"BF": 448.0,
"Pitches": 1596.0
},
"per_game": {
"IP": 4.1,
"ER": 2.913,
"R": 3.0,
"H": 5.913,
"BB": 0.8696,
"SO": 3.6522,
"HR": 0.8261,
"BF": 19.4783,
"Pitches": 69.3913
},
"rates": {
"ERA": 6.01,
"WHIP": 1.5548,
"ER_per_IP": 0.66777,
"H_per_IP": 1.35548,
"BB_per_IP": 0.19934,
"SO_per_IP": 0.83721,
"HR_per_IP": 0.18937
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 3.055,
"predicted_H": 6.253,
"predicted_BB": 1.038,
"predicted_SO": 3.813,
"predicted_HR": 0.647,
"predicted_ERA": 6.0891,
"predicted_WHIP": 1.6144
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4255,
"form_weight": 0.5745,
"form_reliability": 0.8214,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 3.055,
"final": 3.0316,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 6.253,
"final": 6.5708,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.038,
"final": 1.0218,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 3.813,
"final": 2.6162,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.647,
"final": 0.7972,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 6.0891,
"final": 6.0891,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.6144,
"final": 1.6144,
"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": 44.1,
"ER": 30,
"H": 63,
"BB": 8,
"SO": 35,
"HR": 6,
"ERA": 6.090225563909775,
"WHIP": 1.6015037593984964,
"K9": 7.105263157894737,
"HR9": 1.218045112781955,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-17T00:00:00"
},
"recent_form_boost": 1.1880656391660662,
"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": 1.0,
"predicted_SO": 1.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 23.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8214,
"prior_weight": 0.1786
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 4.1,
"predicted_ER": 3,
"predicted_H": 7,
"predicted_BB": 1,
"predicted_SO": 1,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "685299",
"player_name": "Tanner Gordon",
"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": 1.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 1.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"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.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 4.1,
"predicted_R": 3.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 4.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"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.1,
"delta": -0.5667,
"percent_delta": -0.1214,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "COL",
"games": 158,
"wins": 57,
"losses": 101,
"win_pct": 0.3608,
"runs_scored": 732.0,
"runs_allowed": 916.0,
"run_differential": -184.0,
"run_differential_per_game": -1.1646,
"avg_runs_scored": 4.6329,
"avg_runs_allowed": 5.7975,
"offense_index": 1.0326,
"defense_index": 0.7739,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 5.9,
"run_differential": -22.0
},
"available": true,
"quality_score": -0.3661
},
"opponent": {
"team": "ARI",
"games": 158,
"wins": 84,
"losses": 74,
"win_pct": 0.5316,
"runs_scored": 705.0,
"runs_allowed": 699.0,
"run_differential": 6.0,
"run_differential_per_game": 0.038,
"avg_runs_scored": 4.462,
"avg_runs_allowed": 4.4241,
"offense_index": 0.9946,
"defense_index": 1.0141,
"current_streak": "W4",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.9,
"run_differential": -1.0
},
"available": true,
"quality_score": 0.0315
},
"edges": {
"quality_edge": -0.3976,
"offense_edge": 0.0326,
"opponent_offense_edge": -0.0054,
"defense_strength": -0.2261,
"opponent_defense_weakness": -0.0141,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9775,
"run_prevention": 1.0416,
"strikeout": 0.9885
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "685299",
"profile": {
"available": true,
"pitcher_id": "685299",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 422.0,
"k_percent": 18.8,
"bb_percent": 4.5,
"woba": 0.39,
"xwoba": 0.335,
"sweet_spot_percent": 34.8,
"barrel_batted_rate": 10.5,
"hard_hit_percent": 42.4,
"avg_best_speed": 80.9892,
"avg_hyper_speed": 94.5821,
"whiff_percent": 22.4,
"swing_percent": 53.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.8774,
"command_and_miss": -0.1107,
"regression_edge": 1.5714,
"xwoba_edge": -0.6857,
"barrel_edge": -0.7333,
"hard_hit_edge": -0.6429,
"whiff_edge": -0.3857,
"bb_edge": 1.15,
"pitch_design_score": -0.0666
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "685299",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 79,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 79,
"pitch_usage": 0.0,
"release_speed": 88.67473641018984,
"release_spin_rate": 2166.0467400522407,
"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": 79,
"pitch_usage": 0.0,
"release_speed": 88.67473641018984,
"release_spin_rate": 2166.0467400522407,
"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.6747,
"release_spin_rate": 2166.0467,
"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.0666,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4756,
"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.3683,
"sample_weight": 1.0,
"run_prevention_factor": 1.0313,
"strikeout_factor": 0.9663,
"walk_factor": 0.908,
"homer_factor": 1.105,
"woba_minus_xwoba": 0.055,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "685299",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 4.0,
"factor": 1.0313,
"adjusted": 4
},
"predicted_H": {
"original": 7.0,
"factor": 1.0313,
"adjusted": 7
},
"predicted_BB": {
"original": 1.0,
"factor": 0.908,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.105,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9663,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.1,
"predicted_H": 7,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 1,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 21,
"Pitches": 92,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "critical",
"title": "Earned-run miss of 7",
"detail": "Actual minus predicted earned runs was +7; this is the primary run-prevention error."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 5",
"detail": "Actual minus predicted hits was +5."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was +3."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_CHW@KC | away | David Sandlin | David Sandlin | True | 5.0 | 6.0 | 3 | 3 | 1 | -2 | 3/5 | 3/0 | 10/7 | Last 10 before this game (7 available){
"model_context": {
"embedded_season": {
"ERA": 6.29126213592233,
"WHIP": 1.2815533980582523,
"IP": 34.1,
"games_started": null,
"games_pitched": 7,
"role_avg_IP": 5.133,
"recent_avg_IP": 5.133,
"last_start_IP": 4.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.023,
"sample_weight": 0.504,
"run_prevention_factor": 0.998,
"strikeout_factor": 1.0009,
"walk_factor": 0.999,
"homer_factor": 0.9964,
"regression_flag": "neutral",
"k_percent": 22.8,
"bb_percent": 9.0,
"woba": 0.323,
"xwoba": 0.31,
"barrel_percent": 8.2,
"hard_hit_percent": 33.7,
"whiff_percent": 24.6
},
"espn_rank": {
"rank": 801,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.7627118644067797,
"last_10": 0.23728813559322032
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "689818",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 7,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 24.1,
"ER": 15.0,
"R": 18.0,
"H": 22.0,
"BB": 9.0,
"SO": 25.0,
"HR": 4.0,
"BF": 103.0,
"Pitches": 412.0
},
"per_game": {
"IP": 5.0,
"ER": 3.0,
"R": 3.6,
"H": 4.4,
"BB": 1.8,
"SO": 5.0,
"HR": 0.8,
"BF": 20.6,
"Pitches": 82.4
},
"rates": {
"ERA": 5.5479,
"WHIP": 1.274,
"ER_per_IP": 0.61644,
"H_per_IP": 0.90411,
"BB_per_IP": 0.36986,
"SO_per_IP": 1.0274,
"HR_per_IP": 0.16438
}
},
"last_10": {
"games": 7,
"totals": {
"IP": 34.1,
"ER": 24.0,
"R": 27.0,
"H": 31.0,
"BB": 13.0,
"SO": 33.0,
"HR": 6.0,
"BF": 145.0,
"Pitches": 553.0
},
"per_game": {
"IP": 5.0,
"ER": 3.4286,
"R": 3.8571,
"H": 4.4286,
"BB": 1.8571,
"SO": 4.7143,
"HR": 0.8571,
"BF": 20.7143,
"Pitches": 79.0
},
"rates": {
"ERA": 6.2913,
"WHIP": 1.2816,
"ER_per_IP": 0.69903,
"H_per_IP": 0.90291,
"BB_per_IP": 0.37864,
"SO_per_IP": 0.96117,
"HR_per_IP": 0.17476
}
},
"season": {
"games": 7,
"totals": {
"IP": 34.1,
"ER": 24.0,
"R": 27.0,
"H": 31.0,
"BB": 13.0,
"SO": 33.0,
"HR": 6.0,
"BF": 145.0,
"Pitches": 553.0
},
"per_game": {
"IP": 5.0,
"ER": 3.4286,
"R": 3.8571,
"H": 4.4286,
"BB": 1.8571,
"SO": 4.7143,
"HR": 0.8571,
"BF": 20.7143,
"Pitches": 79.0
},
"rates": {
"ERA": 6.2913,
"WHIP": 1.2816,
"ER_per_IP": 0.69903,
"H_per_IP": 0.90291,
"BB_per_IP": 0.37864,
"SO_per_IP": 0.96117,
"HR_per_IP": 0.17476
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.919,
"predicted_H": 4.683,
"predicted_BB": 1.868,
"predicted_SO": 4.903,
"predicted_HR": 0.795,
"predicted_ERA": 5.2539,
"predicted_WHIP": 1.3102
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5261,
"form_weight": 0.4739,
"form_reliability": 0.5833,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.919,
"final": 2.9616,
"source": "model_form_blend"
},
"predicted_H": {
"model": 1.0,
"form": 4.683,
"final": 2.7455,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.868,
"final": 2.4635,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 9.0,
"form": 4.903,
"final": 7.0583,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.795,
"final": 0.3768,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.2539,
"final": 5.2539,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3102,
"final": 1.3102,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 34.1,
"ER": 24,
"H": 31,
"BB": 13,
"SO": 33,
"HR": 6,
"ERA": 6.291262135922331,
"WHIP": 1.2815533980582525,
"K9": 8.650485436893206,
"HR9": 1.5728155339805827,
"games_pitched": 7,
"quality_starts": 2,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 7,
"error_prone": false
},
"games_count": 7,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 1.2026834944839726,
"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": 1.0,
"predicted_BB": 3.0,
"predicted_SO": 9.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
}
},
{
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 3,
"predicted_H": 3,
"predicted_BB": 3,
"predicted_SO": 9,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "689818",
"player_name": "David Sandlin",
"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": 3.0,
"predicted_ER": 3.0,
"predicted_H": 1.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 9.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_quality_floor",
"description": "Weak starter floor restored expected damage from recent form instead of assigning it to zero-inning bullpen rows.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.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": 1.0,
"after": 3.0,
"delta": 2.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 9.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_H",
"before": 1.0,
"after": 3.0,
"delta": 2.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "worse",
"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": 3.0,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 3.0,
"predicted_SO": 10.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": 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": 9.0,
"after": 10.0,
"delta": 1.0,
"percent_delta": 0.1111,
"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": 9.0,
"after": 10.0,
"delta": 1.0,
"percent_delta": 0.1111,
"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": 1.0,
"after": 3.0,
"delta": 2.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 9.0,
"after": 10.0,
"delta": 1.0,
"percent_delta": 0.1111,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 2,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_H",
"before": 1.0,
"after": 3.0,
"delta": 2.0,
"percent_delta": 2.0,
"direction": "boost",
"projection_effect": "worse",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "boosted"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CHW",
"games": 158,
"wins": 81,
"losses": 77,
"win_pct": 0.5127,
"runs_scored": 751.0,
"runs_allowed": 707.0,
"run_differential": 44.0,
"run_differential_per_game": 0.2785,
"avg_runs_scored": 4.7532,
"avg_runs_allowed": 4.4747,
"offense_index": 1.0594,
"defense_index": 1.0026,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 4.9,
"run_differential": 8.0
},
"available": true,
"quality_score": 0.0449
},
"opponent": {
"team": "KC",
"games": 158,
"wins": 68,
"losses": 90,
"win_pct": 0.4304,
"runs_scored": 672.0,
"runs_allowed": 776.0,
"run_differential": -104.0,
"run_differential_per_game": -0.6582,
"avg_runs_scored": 4.2532,
"avg_runs_allowed": 4.9114,
"offense_index": 0.948,
"defense_index": 0.9135,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 5.7,
"run_differential": -17.0
},
"available": true,
"quality_score": -0.2448
},
"edges": {
"quality_edge": 0.2897,
"offense_edge": 0.0594,
"opponent_offense_edge": -0.052,
"defense_strength": 0.0026,
"opponent_defense_weakness": 0.0865,
"recent_win_pct_edge": 0.3
},
"player_factors": {
"ip": 1.0137,
"run_prevention": 0.9769,
"strikeout": 1.0129
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "689818",
"profile": {
"available": true,
"pitcher_id": "689818",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 126.0,
"k_percent": 22.8,
"bb_percent": 9.0,
"woba": 0.323,
"xwoba": 0.31,
"sweet_spot_percent": 36.7,
"barrel_batted_rate": 8.2,
"hard_hit_percent": 33.7,
"avg_best_speed": 75.7945,
"avg_hyper_speed": 93.0105,
"whiff_percent": 24.6,
"swing_percent": 44.8
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0078,
"command_and_miss": 0.0314,
"regression_edge": 0.3714,
"xwoba_edge": 0.0286,
"barrel_edge": -0.2222,
"hard_hit_edge": 0.6,
"whiff_edge": -0.0714,
"bb_edge": 0.025,
"pitch_design_score": 0.0587
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "689818",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 83,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 83,
"pitch_usage": 0.0,
"release_speed": 90.91118713178139,
"release_spin_rate": 2319.243590227783,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 83,
"pitch_usage": 0.0,
"release_speed": 90.91118713178139,
"release_spin_rate": 2319.243590227783,
"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.9112,
"release_spin_rate": 2319.2436,
"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.0587,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.419,
"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.023,
"sample_weight": 0.504,
"run_prevention_factor": 0.998,
"strikeout_factor": 1.0009,
"walk_factor": 0.999,
"homer_factor": 0.9964,
"woba_minus_xwoba": 0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "689818",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.999,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 0.999,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9995,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9982,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 1.0005,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 3,
"predicted_SO": 10,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 96,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 7 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "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/20260924_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"
}
} |
| 20260924 | 20260924_CHW@KC | home | Randy Dobnak | Randy Dobnak | True | 5.2 | 1.1 | -13 | 2 | 4 | 2 | 2/6 | 5/1 | 6/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.0821917808219177,
"WHIP": 1.3287671232876712,
"IP": 73.0,
"games_started": null,
"games_pitched": 14,
"role_avg_IP": 5.278,
"recent_avg_IP": 5.467,
"last_start_IP": 3.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3241,
"sample_weight": 1.0,
"run_prevention_factor": 1.0275,
"strikeout_factor": 0.9291,
"walk_factor": 0.98,
"homer_factor": 0.983,
"regression_flag": "neutral",
"k_percent": 15.6,
"bb_percent": 8.1,
"woba": 0.316,
"xwoba": 0.329,
"barrel_percent": 4.8,
"hard_hit_percent": 39.7,
"whiff_percent": 19.1
},
"espn_rank": {
"rank": 97,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.2,
"season_IP": 73.0,
"season_ERA": 3.082,
"season_WHIP": 1.329,
"reason": "credible starter season workload and run-prevention profile"
},
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "677976",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 14,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.1,
"ER": 17.0,
"R": 17.0,
"H": 28.0,
"BB": 5.0,
"SO": 19.0,
"HR": 5.0,
"BF": 112.0,
"Pitches": 417.0
},
"per_game": {
"IP": 5.1,
"ER": 3.4,
"R": 3.4,
"H": 5.6,
"BB": 1.0,
"SO": 3.8,
"HR": 1.0,
"BF": 22.4,
"Pitches": 83.4
},
"rates": {
"ERA": 5.5976,
"WHIP": 1.2073,
"ER_per_IP": 0.62195,
"H_per_IP": 1.02439,
"BB_per_IP": 0.18293,
"SO_per_IP": 0.69512,
"HR_per_IP": 0.18293
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.0,
"ER": 22.0,
"R": 22.0,
"H": 55.0,
"BB": 16.0,
"SO": 38.0,
"HR": 5.0,
"BF": 228.0,
"Pitches": 891.0
},
"per_game": {
"IP": 5.1,
"ER": 2.2,
"R": 2.2,
"H": 5.5,
"BB": 1.6,
"SO": 3.8,
"HR": 0.5,
"BF": 22.8,
"Pitches": 89.1
},
"rates": {
"ERA": 3.6667,
"WHIP": 1.3148,
"ER_per_IP": 0.40741,
"H_per_IP": 1.01852,
"BB_per_IP": 0.2963,
"SO_per_IP": 0.7037,
"HR_per_IP": 0.09259
}
},
"season": {
"games": 14,
"totals": {
"IP": 73.0,
"ER": 25.0,
"R": 25.0,
"H": 72.0,
"BB": 25.0,
"SO": 48.0,
"HR": 7.0,
"BF": 308.0,
"Pitches": 1222.0
},
"per_game": {
"IP": 5.1,
"ER": 1.7857,
"R": 1.7857,
"H": 5.1429,
"BB": 1.7857,
"SO": 3.4286,
"HR": 0.5,
"BF": 22.0,
"Pitches": 87.2857
},
"rates": {
"ERA": 3.0822,
"WHIP": 1.3288,
"ER_per_IP": 0.34247,
"H_per_IP": 0.9863,
"BB_per_IP": 0.34247,
"SO_per_IP": 0.65753,
"HR_per_IP": 0.09589
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.69,
"predicted_H": 5.455,
"predicted_BB": 1.553,
"predicted_SO": 4.096,
"predicted_HR": 0.746,
"predicted_ERA": 4.4652,
"predicted_WHIP": 1.2927
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4612,
"form_weight": 0.5388,
"form_reliability": 0.7368,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.69,
"final": 2.3718,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 5.455,
"final": 3.8615,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 5.0,
"form": 1.553,
"final": 3.1428,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 4.096,
"final": 4.9741,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.746,
"final": 1.3243,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.4652,
"final": 4.4652,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2927,
"final": 1.2927,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 54.0,
"ER": 22,
"H": 55,
"BB": 16,
"SO": 38,
"HR": 5,
"ERA": 3.6666666666666665,
"WHIP": 1.3148148148148149,
"K9": 6.333333333333333,
"HR9": 0.8333333333333334,
"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-18T00:00:00"
},
"recent_form_boost": 0.9082480396116244,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_BB": 5.0,
"predicted_SO": 6.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 2,
"predicted_H": 2,
"predicted_BB": 5,
"predicted_SO": 6,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "677976",
"player_name": "Randy Dobnak",
"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": 5.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 5.6667,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 1.0,
"predicted_IP": 5.2,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 2,
"boosted_metrics": 0,
"deboosted_metrics": 2,
"better_metrics": 1,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_HR",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 2.0,
"predicted_IP": 5.2,
"predicted_R": 2.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 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": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": {
"metric": "predicted_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": 5.0,
"after": 5.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.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "KC",
"games": 158,
"wins": 68,
"losses": 90,
"win_pct": 0.4304,
"runs_scored": 672.0,
"runs_allowed": 776.0,
"run_differential": -104.0,
"run_differential_per_game": -0.6582,
"avg_runs_scored": 4.2532,
"avg_runs_allowed": 4.9114,
"offense_index": 0.948,
"defense_index": 0.9135,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 2,
"losses": 8,
"win_pct": 0.2,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 5.7,
"run_differential": -17.0
},
"available": true,
"quality_score": -0.2448
},
"opponent": {
"team": "CHW",
"games": 158,
"wins": 81,
"losses": 77,
"win_pct": 0.5127,
"runs_scored": 751.0,
"runs_allowed": 707.0,
"run_differential": 44.0,
"run_differential_per_game": 0.2785,
"avg_runs_scored": 4.7532,
"avg_runs_allowed": 4.4747,
"offense_index": 1.0594,
"defense_index": 1.0026,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.7,
"avg_runs_allowed": 4.9,
"run_differential": 8.0
},
"available": true,
"quality_score": 0.0449
},
"edges": {
"quality_edge": -0.2897,
"offense_edge": -0.052,
"opponent_offense_edge": 0.0594,
"defense_strength": -0.0865,
"opponent_defense_weakness": -0.0026,
"recent_win_pct_edge": -0.3
},
"player_factors": {
"ip": 0.9834,
"run_prevention": 1.0326,
"strikeout": 0.9866
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "677976",
"profile": {
"available": true,
"pitcher_id": "677976",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 287.0,
"k_percent": 15.6,
"bb_percent": 8.1,
"woba": 0.316,
"xwoba": 0.329,
"sweet_spot_percent": 33.6,
"barrel_batted_rate": 4.8,
"hard_hit_percent": 39.7,
"avg_best_speed": 79.6117,
"avg_hyper_speed": 94.5829,
"whiff_percent": 19.1,
"swing_percent": 45.4
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.1861,
"command_and_miss": -0.6614,
"regression_edge": -0.3714,
"xwoba_edge": -0.5143,
"barrel_edge": 0.5333,
"hard_hit_edge": -0.2571,
"whiff_edge": -0.8571,
"bb_edge": 0.25,
"pitch_design_score": -0.1347
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "677976",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 87,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 87.45761123700552,
"release_spin_rate": 2014.207682509976,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 87,
"pitch_usage": 0.0,
"release_speed": 87.45761123700552,
"release_spin_rate": 2014.207682509976,
"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.4576,
"release_spin_rate": 2014.2077,
"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.1347,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.9624,
"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.3241,
"sample_weight": 1.0,
"run_prevention_factor": 1.0275,
"strikeout_factor": 0.9291,
"walk_factor": 0.98,
"homer_factor": 0.983,
"woba_minus_xwoba": -0.013,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "677976",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0275,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.0275,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.98,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.983,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9291,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 5,
"predicted_SO": 6,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 24,
"Pitches": 109,
"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 -13 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was +4."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -4."
},
{
"code": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_CIN@ATL | away | Brady Singer | Brady Singer | True | 4.0 | 3.0 | -3 | 4 | 5 | 1 | 7/7 | 1/2 | 7/1 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.6688311688311686,
"WHIP": 1.5649350649350648,
"IP": 154.0,
"games_started": null,
"games_pitched": 30,
"role_avg_IP": 5.133,
"recent_avg_IP": 4.467,
"last_start_IP": 3.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.6784,
"sample_weight": 1.0,
"run_prevention_factor": 1.0577,
"strikeout_factor": 0.9703,
"walk_factor": 0.988,
"homer_factor": 1.1236,
"regression_flag": "neutral",
"k_percent": 17.7,
"bb_percent": 8.5,
"woba": 0.372,
"xwoba": 0.361,
"barrel_percent": 10.1,
"hard_hit_percent": 43.0,
"whiff_percent": 24.2
},
"espn_rank": {
"rank": 591,
"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": "663903",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 30,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.1,
"ER": 28.0,
"R": 28.0,
"H": 37.0,
"BB": 17.0,
"SO": 18.0,
"HR": 6.0,
"BF": 124.0,
"Pitches": 466.0
},
"per_game": {
"IP": 4.1,
"ER": 5.6,
"R": 5.6,
"H": 7.4,
"BB": 3.4,
"SO": 3.6,
"HR": 1.2,
"BF": 24.8,
"Pitches": 93.2
},
"rates": {
"ERA": 11.2836,
"WHIP": 2.4179,
"ER_per_IP": 1.25373,
"H_per_IP": 1.65672,
"BB_per_IP": 0.76119,
"SO_per_IP": 0.80597,
"HR_per_IP": 0.26866
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 50.2,
"ER": 45.0,
"R": 45.0,
"H": 70.0,
"BB": 28.0,
"SO": 37.0,
"HR": 10.0,
"BF": 253.0,
"Pitches": 966.0
},
"per_game": {
"IP": 5.0,
"ER": 4.5,
"R": 4.5,
"H": 7.0,
"BB": 2.8,
"SO": 3.7,
"HR": 1.0,
"BF": 25.3,
"Pitches": 96.6
},
"rates": {
"ERA": 7.9934,
"WHIP": 1.9342,
"ER_per_IP": 0.88816,
"H_per_IP": 1.38158,
"BB_per_IP": 0.55263,
"SO_per_IP": 0.73026,
"HR_per_IP": 0.19737
}
},
"season": {
"games": 30,
"totals": {
"IP": 154.0,
"ER": 97.0,
"R": 102.0,
"H": 181.0,
"BB": 60.0,
"SO": 125.0,
"HR": 31.0,
"BF": 707.0,
"Pitches": 2738.0
},
"per_game": {
"IP": 5.0,
"ER": 3.2333,
"R": 3.4,
"H": 6.0333,
"BB": 2.0,
"SO": 4.1667,
"HR": 1.0333,
"BF": 23.5667,
"Pitches": 91.2667
},
"rates": {
"ERA": 5.6688,
"WHIP": 1.5649,
"ER_per_IP": 0.62987,
"H_per_IP": 1.17532,
"BB_per_IP": 0.38961,
"SO_per_IP": 0.81169,
"HR_per_IP": 0.2013
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 4.371,
"predicted_H": 6.551,
"predicted_BB": 2.723,
"predicted_SO": 3.77,
"predicted_HR": 1.026,
"predicted_ERA": 8.3784,
"predicted_WHIP": 1.9752
}
},
"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": 4.2,
"form": 4.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 4.371,
"final": 4.6291,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 6.551,
"final": 6.7353,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.723,
"final": 2.0159,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 3.77,
"final": 5.0955,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.026,
"final": 1.0153,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 8.3784,
"final": 8.3784,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.9752,
"final": 1.9752,
"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": 45,
"H": 70,
"BB": 28,
"SO": 37,
"HR": 10,
"ERA": 7.99342105263158,
"WHIP": 1.9342105263157896,
"K9": 6.572368421052632,
"HR9": 1.7763157894736843,
"games_pitched": 10,
"quality_starts": 3,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 2,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-17T00:00:00"
},
"recent_form_boost": 1.4104928008202016,
"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": 7.0,
"predicted_BB": 1.0,
"predicted_SO": 7.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 30.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8571,
"prior_weight": 0.1429
}
},
{
"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": 5,
"predicted_H": 7,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663903",
"player_name": "Brady Singer",
"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": 5.0,
"predicted_H": 7.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": 1.0,
"predicted_ER": 5.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 4.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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 1.0,
"predicted_ER": 5.0,
"predicted_H": 7.0,
"predicted_HR": 1.0,
"predicted_IP": 4.0,
"predicted_R": 5.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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 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": "CIN",
"games": 158,
"wins": 73,
"losses": 85,
"win_pct": 0.462,
"runs_scored": 648.0,
"runs_allowed": 808.0,
"run_differential": -160.0,
"run_differential_per_game": -1.0127,
"avg_runs_scored": 4.1013,
"avg_runs_allowed": 5.1139,
"offense_index": 0.9141,
"defense_index": 0.8773,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.8,
"avg_runs_allowed": 4.2,
"run_differential": -14.0
},
"available": true,
"quality_score": -0.1914
},
"opponent": {
"team": "ATL",
"games": 158,
"wins": 93,
"losses": 65,
"win_pct": 0.5886,
"runs_scored": 725.0,
"runs_allowed": 608.0,
"run_differential": 117.0,
"run_differential_per_game": 0.7405,
"avg_runs_scored": 4.5886,
"avg_runs_allowed": 3.8481,
"offense_index": 1.0227,
"defense_index": 1.166,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.2,
"run_differential": 6.0
},
"available": true,
"quality_score": 0.2011
},
"edges": {
"quality_edge": -0.3925,
"offense_edge": -0.0859,
"opponent_offense_edge": 0.0227,
"defense_strength": -0.1227,
"opponent_defense_weakness": -0.166,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9797,
"run_prevention": 1.0355,
"strikeout": 0.9864
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663903",
"profile": {
"available": true,
"pitcher_id": "663903",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 670.0,
"k_percent": 17.7,
"bb_percent": 8.5,
"woba": 0.372,
"xwoba": 0.361,
"sweet_spot_percent": 37.1,
"barrel_batted_rate": 10.1,
"hard_hit_percent": 43.0,
"avg_best_speed": 81.1017,
"avg_hyper_speed": 94.8519,
"whiff_percent": 24.2,
"swing_percent": 44.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -1.1121,
"command_and_miss": -0.2914,
"regression_edge": 0.3143,
"xwoba_edge": -1.4286,
"barrel_edge": -0.6444,
"hard_hit_edge": -0.7286,
"whiff_edge": -0.1286,
"bb_edge": 0.15,
"pitch_design_score": -0.1408
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663903",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 94,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 87.3491612330451,
"release_spin_rate": 2382.3872675312164,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 87.3491612330451,
"release_spin_rate": 2382.3872675312164,
"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.3492,
"release_spin_rate": 2382.3873,
"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.1408,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.0058,
"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.6784,
"sample_weight": 1.0,
"run_prevention_factor": 1.0577,
"strikeout_factor": 0.9703,
"walk_factor": 0.988,
"homer_factor": 1.1236,
"woba_minus_xwoba": 0.011,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "663903",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 5.0,
"factor": 1.0577,
"adjusted": 5
},
"predicted_H": {
"original": 7.0,
"factor": 1.0577,
"adjusted": 7
},
"predicted_BB": {
"original": 3.0,
"factor": 0.988,
"adjusted": 3
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1236,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9703,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.0,
"predicted_H": 7,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 20,
"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/20260924_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"
}
} |
| 20260924 | 20260924_CIN@ATL | home | Tyler Mahle | Tyler Mahle | True | 6.0 | 5.0 | -3 | 4 | 5 | 1 | 6/6 | 4/2 | 2/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.8125,
"WHIP": 1.2222222222222223,
"IP": 144.0,
"games_started": null,
"games_pitched": 26,
"role_avg_IP": 5.538,
"recent_avg_IP": 6.133,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.0754,
"sample_weight": 1.0,
"run_prevention_factor": 0.9936,
"strikeout_factor": 0.9914,
"walk_factor": 0.966,
"homer_factor": 0.9751,
"regression_flag": "neutral",
"k_percent": 22.5,
"bb_percent": 7.4,
"woba": 0.306,
"xwoba": 0.304,
"barrel_percent": 6.3,
"hard_hit_percent": 37.4,
"whiff_percent": 23.1
},
"espn_rank": {
"rank": 90,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "641816",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 26,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.2,
"ER": 4.0,
"R": 6.0,
"H": 24.0,
"BB": 4.0,
"SO": 25.0,
"HR": 2.0,
"BF": 119.0,
"Pitches": 472.0
},
"per_game": {
"IP": 6.0,
"ER": 0.8,
"R": 1.2,
"H": 4.8,
"BB": 0.8,
"SO": 5.0,
"HR": 0.4,
"BF": 23.8,
"Pitches": 94.4
},
"rates": {
"ERA": 1.1739,
"WHIP": 0.913,
"ER_per_IP": 0.13043,
"H_per_IP": 0.78261,
"BB_per_IP": 0.13043,
"SO_per_IP": 0.81522,
"HR_per_IP": 0.06522
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 61.0,
"ER": 12.0,
"R": 14.0,
"H": 45.0,
"BB": 11.0,
"SO": 56.0,
"HR": 5.0,
"BF": 233.0,
"Pitches": 920.0
},
"per_game": {
"IP": 6.0,
"ER": 1.2,
"R": 1.4,
"H": 4.5,
"BB": 1.1,
"SO": 5.6,
"HR": 0.5,
"BF": 23.3,
"Pitches": 92.0
},
"rates": {
"ERA": 1.7705,
"WHIP": 0.918,
"ER_per_IP": 0.19672,
"H_per_IP": 0.7377,
"BB_per_IP": 0.18033,
"SO_per_IP": 0.91803,
"HR_per_IP": 0.08197
}
},
"season": {
"games": 26,
"totals": {
"IP": 144.0,
"ER": 61.0,
"R": 64.0,
"H": 132.0,
"BB": 44.0,
"SO": 133.0,
"HR": 18.0,
"BF": 592.0,
"Pitches": 2311.0
},
"per_game": {
"IP": 5.2,
"ER": 2.3462,
"R": 2.4615,
"H": 5.0769,
"BB": 1.6923,
"SO": 5.1154,
"HR": 0.6923,
"BF": 22.7692,
"Pitches": 88.8846
},
"rates": {
"ERA": 3.8125,
"WHIP": 1.2222,
"ER_per_IP": 0.42361,
"H_per_IP": 0.91667,
"BB_per_IP": 0.30556,
"SO_per_IP": 0.92361,
"HR_per_IP": 0.125
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.0,
"predicted_ER": 1.548,
"predicted_H": 4.899,
"predicted_BB": 1.272,
"predicted_SO": 5.25,
"predicted_HR": 0.556,
"predicted_ERA": 2.3435,
"predicted_WHIP": 1.0382
}
},
"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": 6.0,
"final": 6.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 1.548,
"final": 2.5733,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.899,
"final": 5.3594,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.272,
"final": 2.4127,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 5.25,
"final": 3.4729,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.556,
"final": 0.3235,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 2.3435,
"final": 2.3435,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0382,
"final": 1.0382,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 61.0,
"ER": 12,
"H": 45,
"BB": 11,
"SO": 56,
"HR": 5,
"ERA": 1.7704918032786885,
"WHIP": 0.9180327868852459,
"K9": 8.262295081967213,
"HR9": 0.7377049180327869,
"games_pitched": 10,
"quality_starts": 8,
"dominant_form": true,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 0.6898441149275345,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_BB": 4.0,
"predicted_SO": 1.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "641816",
"player_name": "Tyler Mahle",
"position": "Starter",
"team": "ATL",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 1.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_R": 4.0,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 1.0,
"after": 2.0,
"delta": 1.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "ATL",
"games": 158,
"wins": 93,
"losses": 65,
"win_pct": 0.5886,
"runs_scored": 725.0,
"runs_allowed": 608.0,
"run_differential": 117.0,
"run_differential_per_game": 0.7405,
"avg_runs_scored": 4.5886,
"avg_runs_allowed": 3.8481,
"offense_index": 1.0227,
"defense_index": 1.166,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 4.2,
"run_differential": 6.0
},
"available": true,
"quality_score": 0.2011
},
"opponent": {
"team": "CIN",
"games": 158,
"wins": 73,
"losses": 85,
"win_pct": 0.462,
"runs_scored": 648.0,
"runs_allowed": 808.0,
"run_differential": -160.0,
"run_differential_per_game": -1.0127,
"avg_runs_scored": 4.1013,
"avg_runs_allowed": 5.1139,
"offense_index": 0.9141,
"defense_index": 0.8773,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 2.8,
"avg_runs_allowed": 4.2,
"run_differential": -14.0
},
"available": true,
"quality_score": -0.1914
},
"edges": {
"quality_edge": 0.3925,
"offense_edge": 0.0227,
"opponent_offense_edge": -0.0859,
"defense_strength": 0.166,
"opponent_defense_weakness": 0.1227,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0241,
"run_prevention": 0.95,
"strikeout": 1.0186
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "641816",
"profile": {
"available": true,
"pitcher_id": "641816",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 543.0,
"k_percent": 22.5,
"bb_percent": 7.4,
"woba": 0.306,
"xwoba": 0.304,
"sweet_spot_percent": 32.0,
"barrel_batted_rate": 6.3,
"hard_hit_percent": 37.4,
"avg_best_speed": 79.9962,
"avg_hyper_speed": 93.8414,
"whiff_percent": 23.1,
"swing_percent": 46.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1184,
"command_and_miss": 0.0171,
"regression_edge": 0.0571,
"xwoba_edge": 0.2,
"barrel_edge": 0.2,
"hard_hit_edge": 0.0714,
"whiff_edge": -0.2857,
"bb_edge": 0.425,
"pitch_design_score": -0.0125
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "641816",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 90,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 90,
"pitch_usage": 0.0,
"release_speed": 89.64026118417685,
"release_spin_rate": 2134.9981031675284,
"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": 90,
"pitch_usage": 0.0,
"release_speed": 89.64026118417685,
"release_spin_rate": 2134.9981031675284,
"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.6403,
"release_spin_rate": 2134.9981,
"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.0125,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.0894,
"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.0754,
"sample_weight": 1.0,
"run_prevention_factor": 0.9936,
"strikeout_factor": 0.9914,
"walk_factor": 0.966,
"homer_factor": 0.9751,
"woba_minus_xwoba": 0.002,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "641816",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9936,
"adjusted": 1
},
"predicted_H": {
"original": 5.0,
"factor": 0.9936,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.966,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9751,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9914,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 6,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 4,
"predicted_SO": 2,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 30,
"Pitches": 118,
"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."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_CLE@BOS | away | Daniel Espino | Daniel Espino | True | 3.0 | 1.0 | -6 | 2 | 0 | -2 | 6/0 | 1/0 | 6/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.725,
"WHIP": 1.425,
"IP": 13.1,
"games_started": null,
"games_pitched": 12,
"role_avg_IP": 1.5,
"recent_avg_IP": 1.5,
"last_start_IP": 1.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2623,
"sample_weight": 0.45,
"run_prevention_factor": 0.9777,
"strikeout_factor": 1.072,
"walk_factor": 1.0252,
"homer_factor": 1.038,
"regression_flag": "positive_pitcher_regression",
"k_percent": 37.3,
"bb_percent": 11.9,
"woba": 0.329,
"xwoba": 0.291,
"barrel_percent": 13.3,
"hard_hit_percent": 36.7,
"whiff_percent": 37.8
},
"espn_rank": {
"rank": 462,
"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": 2.72,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.3524,
"prior_weight": 0.6476
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "682982",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 12,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 5.1,
"ER": 4.0,
"R": 4.0,
"H": 6.0,
"BB": 3.0,
"SO": 7.0,
"HR": 2.0,
"BF": 25.0,
"Pitches": 97.0
},
"per_game": {
"IP": 1.0,
"ER": 0.8,
"R": 0.8,
"H": 1.2,
"BB": 0.6,
"SO": 1.4,
"HR": 0.4,
"BF": 5.0,
"Pitches": 19.4
},
"rates": {
"ERA": 6.75,
"WHIP": 1.6875,
"ER_per_IP": 0.75,
"H_per_IP": 1.125,
"BB_per_IP": 0.5625,
"SO_per_IP": 1.3125,
"HR_per_IP": 0.375
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 11.1,
"ER": 5.0,
"R": 5.0,
"H": 9.0,
"BB": 7.0,
"SO": 18.0,
"HR": 2.0,
"BF": 50.0,
"Pitches": 211.0
},
"per_game": {
"IP": 1.0,
"ER": 0.5,
"R": 0.5,
"H": 0.9,
"BB": 0.7,
"SO": 1.8,
"HR": 0.2,
"BF": 5.0,
"Pitches": 21.1
},
"rates": {
"ERA": 3.9706,
"WHIP": 1.4118,
"ER_per_IP": 0.44118,
"H_per_IP": 0.79412,
"BB_per_IP": 0.61765,
"SO_per_IP": 1.58824,
"HR_per_IP": 0.17647
}
},
"season": {
"games": 12,
"totals": {
"IP": 13.1,
"ER": 7.0,
"R": 7.0,
"H": 12.0,
"BB": 7.0,
"SO": 22.0,
"HR": 3.0,
"BF": 59.0,
"Pitches": 243.0
},
"per_game": {
"IP": 1.0,
"ER": 0.5833,
"R": 0.5833,
"H": 1.0,
"BB": 0.5833,
"SO": 1.8333,
"HR": 0.25,
"BF": 4.9167,
"Pitches": 20.25
},
"rates": {
"ERA": 4.725,
"WHIP": 1.425,
"ER_per_IP": 0.525,
"H_per_IP": 0.9,
"BB_per_IP": 0.525,
"SO_per_IP": 1.65,
"HR_per_IP": 0.225
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.1,
"predicted_ER": 1.826,
"predicted_H": 3.294,
"predicted_BB": 1.504,
"predicted_SO": 3.804,
"predicted_HR": 0.652,
"predicted_ERA": 4.8692,
"predicted_WHIP": 1.4218
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.6236,
"form_weight": 0.3764,
"form_reliability": 0.3524,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 2.72,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.3524,
"prior_weight": 0.6476
},
"applied_metrics": {
"predicted_IP": {
"model": 4.2,
"form": 3.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.826,
"final": 1.9345,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 3.294,
"final": 4.9815,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.504,
"final": 1.1897,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 6.0,
"form": 3.804,
"final": 5.1734,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.652,
"final": 0.869,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.8692,
"final": 4.8692,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4218,
"final": 1.4218,
"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": 11.1,
"ER": 5,
"H": 9,
"BB": 7,
"SO": 18,
"HR": 2,
"ERA": 3.9705882352941173,
"WHIP": 1.4117647058823528,
"K9": 14.294117647058822,
"HR9": 1.588235294117647,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 0.9792846928930355,
"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": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 6.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 2.72,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.3524,
"prior_weight": 0.6476
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 3.0,
"predicted_ER": 2,
"predicted_H": 6,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "682982",
"player_name": "Daniel Espino",
"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": 1.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.6667,
"predicted_SO": 6.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 3.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 3.0,
"delta": -1.6667,
"percent_delta": -0.3571,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 3.0,
"delta": -1.6667,
"percent_delta": -0.3571,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 2.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 3.0,
"predicted_R": 2.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 4.6667,
"after": 3.0,
"delta": -1.6667,
"percent_delta": -0.3571,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 4.6667,
"after": 3.0,
"delta": -1.6667,
"percent_delta": -0.3571,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CLE",
"games": 158,
"wins": 82,
"losses": 76,
"win_pct": 0.519,
"runs_scored": 652.0,
"runs_allowed": 650.0,
"run_differential": 2.0,
"run_differential_per_game": 0.0127,
"avg_runs_scored": 4.1266,
"avg_runs_allowed": 4.1139,
"offense_index": 0.9197,
"defense_index": 1.0906,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 3.4,
"run_differential": 15.0
},
"available": true,
"quality_score": 0.0877
},
"opponent": {
"team": "BOS",
"games": 158,
"wins": 85,
"losses": 73,
"win_pct": 0.538,
"runs_scored": 681.0,
"runs_allowed": 601.0,
"run_differential": 80.0,
"run_differential_per_game": 0.5063,
"avg_runs_scored": 4.3101,
"avg_runs_allowed": 3.8038,
"offense_index": 0.9606,
"defense_index": 1.1795,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 2.7,
"avg_runs_allowed": 2.8,
"run_differential": -1.0
},
"available": true,
"quality_score": 0.0944
},
"edges": {
"quality_edge": -0.0067,
"offense_edge": -0.0803,
"opponent_offense_edge": -0.0394,
"defense_strength": 0.0906,
"opponent_defense_weakness": -0.1795,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.004,
"run_prevention": 0.985,
"strikeout": 1.003
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "682982",
"profile": {
"available": true,
"pitcher_id": "682982",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 52.0,
"k_percent": 37.3,
"bb_percent": 11.9,
"woba": 0.329,
"xwoba": 0.291,
"sweet_spot_percent": 30.0,
"barrel_batted_rate": 13.3,
"hard_hit_percent": 36.7,
"avg_best_speed": 71.6705,
"avg_hyper_speed": 93.2488,
"whiff_percent": 37.8,
"swing_percent": 49.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.1205,
"command_and_miss": 1.4786,
"regression_edge": 1.0857,
"xwoba_edge": 0.5714,
"barrel_edge": -1.3556,
"hard_hit_edge": 0.1714,
"whiff_edge": 1.8143,
"bb_edge": -0.7,
"pitch_design_score": 0.28
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "682982",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 19,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 19,
"pitch_usage": 0.0,
"release_speed": 94.96482029799016,
"release_spin_rate": 2413.0714912015155,
"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": 19,
"pitch_usage": 0.0,
"release_speed": 94.96482029799016,
"release_spin_rate": 2413.0714912015155,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 94.9648,
"release_spin_rate": 2413.0715,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.28,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 2.0,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.2623,
"sample_weight": 0.45,
"run_prevention_factor": 0.9777,
"strikeout_factor": 1.072,
"walk_factor": 1.0252,
"homer_factor": 1.038,
"woba_minus_xwoba": 0.038,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "682982",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.99,
"adjusted": 3
},
"predicted_H": {
"original": 3.0,
"factor": 0.99,
"adjusted": 3
},
"predicted_BB": {
"original": 5.0,
"factor": 1.0113,
"adjusted": 5
},
"predicted_HR": {
"original": 2.0,
"factor": 1.0171,
"adjusted": 2
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0324,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 3.0,
"predicted_H": 6,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 1,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 16,
"Pitches": 72,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "WORKLOAD_MISS",
"severity": "warning",
"title": "Workload missed by at least two innings",
"detail": "The actual outing differed by -6 outs from the projected workload."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 6",
"detail": "Actual minus predicted hits was -6."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_CLE@BOS | home | Ranger Suarez | Ranger Suarez | True | 5.2 | 5.0 | -2 | 1 | 1 | 0 | 2/3 | 3/1 | 5/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.265116279069767,
"WHIP": 1.2,
"IP": 143.1,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.309,
"recent_avg_IP": 6.0,
"last_start_IP": 5.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1698,
"sample_weight": 1.0,
"run_prevention_factor": 0.9856,
"strikeout_factor": 0.9869,
"walk_factor": 0.97,
"homer_factor": 0.9317,
"regression_flag": "neutral",
"k_percent": 22.8,
"bb_percent": 7.6,
"woba": 0.288,
"xwoba": 0.298,
"barrel_percent": 5.4,
"hard_hit_percent": 33.5,
"whiff_percent": 22.0
},
"espn_rank": {
"rank": 59,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "624133",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 30.0,
"ER": 9.0,
"R": 9.0,
"H": 26.0,
"BB": 12.0,
"SO": 22.0,
"HR": 2.0,
"BF": 126.0,
"Pitches": 479.0
},
"per_game": {
"IP": 6.0,
"ER": 1.8,
"R": 1.8,
"H": 5.2,
"BB": 2.4,
"SO": 4.4,
"HR": 0.4,
"BF": 25.2,
"Pitches": 95.8
},
"rates": {
"ERA": 2.7,
"WHIP": 1.2667,
"ER_per_IP": 0.3,
"H_per_IP": 0.86667,
"BB_per_IP": 0.4,
"SO_per_IP": 0.73333,
"HR_per_IP": 0.06667
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.0,
"ER": 20.0,
"R": 21.0,
"H": 47.0,
"BB": 19.0,
"SO": 38.0,
"HR": 4.0,
"BF": 217.0,
"Pitches": 852.0
},
"per_game": {
"IP": 5.1,
"ER": 2.0,
"R": 2.1,
"H": 4.7,
"BB": 1.9,
"SO": 3.8,
"HR": 0.4,
"BF": 21.7,
"Pitches": 85.2
},
"rates": {
"ERA": 3.4615,
"WHIP": 1.2692,
"ER_per_IP": 0.38462,
"H_per_IP": 0.90385,
"BB_per_IP": 0.36538,
"SO_per_IP": 0.73077,
"HR_per_IP": 0.07692
}
},
"season": {
"games": 27,
"totals": {
"IP": 143.1,
"ER": 52.0,
"R": 55.0,
"H": 127.0,
"BB": 45.0,
"SO": 135.0,
"HR": 9.0,
"BF": 593.0,
"Pitches": 2298.0
},
"per_game": {
"IP": 5.1,
"ER": 1.9259,
"R": 2.037,
"H": 4.7037,
"BB": 1.6667,
"SO": 5.0,
"HR": 0.3333,
"BF": 21.963,
"Pitches": 85.1111
},
"rates": {
"ERA": 3.2651,
"WHIP": 1.2,
"ER_per_IP": 0.36279,
"H_per_IP": 0.88605,
"BB_per_IP": 0.31395,
"SO_per_IP": 0.94186,
"HR_per_IP": 0.06279
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.078,
"predicted_H": 5.069,
"predicted_BB": 2.095,
"predicted_SO": 4.509,
"predicted_HR": 0.461,
"predicted_ERA": 3.3163,
"predicted_WHIP": 1.2705
}
},
"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.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.078,
"final": 1.6296,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 5.069,
"final": 3.7923,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 2.095,
"final": 2.4715,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.509,
"final": 4.7133,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.461,
"final": 0.2692,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.3163,
"final": 3.3163,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2705,
"final": 1.2705,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 52.0,
"ER": 20,
"H": 47,
"BB": 19,
"SO": 38,
"HR": 4,
"ERA": 3.461538461538462,
"WHIP": 1.2692307692307694,
"K9": 6.5769230769230775,
"HR9": 0.6923076923076924,
"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-18T00:00:00"
},
"recent_form_boost": 0.8840315153951002,
"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": 3.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "624133",
"player_name": "Ranger Suarez",
"position": "Starter",
"team": "BOS",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 1.0,
"predicted_H": 2.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": 3.0,
"predicted_ER": 1.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "BOS",
"games": 158,
"wins": 85,
"losses": 73,
"win_pct": 0.538,
"runs_scored": 681.0,
"runs_allowed": 601.0,
"run_differential": 80.0,
"run_differential_per_game": 0.5063,
"avg_runs_scored": 4.3101,
"avg_runs_allowed": 3.8038,
"offense_index": 0.9606,
"defense_index": 1.1795,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 2.7,
"avg_runs_allowed": 2.8,
"run_differential": -1.0
},
"available": true,
"quality_score": 0.0944
},
"opponent": {
"team": "CLE",
"games": 158,
"wins": 82,
"losses": 76,
"win_pct": 0.519,
"runs_scored": 652.0,
"runs_allowed": 650.0,
"run_differential": 2.0,
"run_differential_per_game": 0.0127,
"avg_runs_scored": 4.1266,
"avg_runs_allowed": 4.1139,
"offense_index": 0.9197,
"defense_index": 1.0906,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.9,
"avg_runs_allowed": 3.4,
"run_differential": 15.0
},
"available": true,
"quality_score": 0.0877
},
"edges": {
"quality_edge": 0.0067,
"offense_edge": -0.0394,
"opponent_offense_edge": -0.0803,
"defense_strength": 0.1795,
"opponent_defense_weakness": -0.0906,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 1.0089,
"run_prevention": 0.9689,
"strikeout": 1.0066
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "624133",
"profile": {
"available": true,
"pitcher_id": "624133",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 568.0,
"k_percent": 22.8,
"bb_percent": 7.6,
"woba": 0.288,
"xwoba": 0.298,
"sweet_spot_percent": 37.4,
"barrel_batted_rate": 5.4,
"hard_hit_percent": 33.5,
"avg_best_speed": 75.2498,
"avg_hyper_speed": 93.2134,
"whiff_percent": 22.0,
"swing_percent": 45.1
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3987,
"command_and_miss": -0.0286,
"regression_edge": -0.2857,
"xwoba_edge": 0.3714,
"barrel_edge": 0.4,
"hard_hit_edge": 0.6286,
"whiff_edge": -0.4429,
"bb_edge": 0.375,
"pitch_design_score": -0.2191
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "624133",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 94,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 85.95170532532588,
"release_spin_rate": 1975.9066423776717,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 94,
"pitch_usage": 0.0,
"release_speed": 85.95170532532588,
"release_spin_rate": 1975.9066423776717,
"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.9517,
"release_spin_rate": 1975.9066,
"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.2191,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.5648,
"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.1698,
"sample_weight": 1.0,
"run_prevention_factor": 0.9856,
"strikeout_factor": 0.9869,
"walk_factor": 0.97,
"homer_factor": 0.9317,
"woba_minus_xwoba": -0.01,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "624133",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9856,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9856,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.97,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9317,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9869,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 2,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 94,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_HOU@OAK | away | Peter Lambert | Peter Lambert | True | 5.2 | 2.2 | -9 | 1 | 4 | 3 | 4/6 | 1/2 | 9/6 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.6953642384105962,
"WHIP": 1.2251655629139073,
"IP": 151.0,
"games_started": null,
"games_pitched": 27,
"role_avg_IP": 5.593,
"recent_avg_IP": 5.733,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1828,
"sample_weight": 1.0,
"run_prevention_factor": 0.9845,
"strikeout_factor": 1.0057,
"walk_factor": 0.996,
"homer_factor": 0.968,
"regression_flag": "neutral",
"k_percent": 22.9,
"bb_percent": 8.9,
"woba": 0.295,
"xwoba": 0.296,
"barrel_percent": 6.8,
"hard_hit_percent": 35.8,
"whiff_percent": 25.2
},
"espn_rank": {
"rank": 33,
"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": "663567",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 27,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.2,
"ER": 12.0,
"R": 13.0,
"H": 29.0,
"BB": 9.0,
"SO": 27.0,
"HR": 3.0,
"BF": 125.0,
"Pitches": 476.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.6,
"H": 5.8,
"BB": 1.8,
"SO": 5.4,
"HR": 0.6,
"BF": 25.0,
"Pitches": 95.2
},
"rates": {
"ERA": 3.7674,
"WHIP": 1.3256,
"ER_per_IP": 0.4186,
"H_per_IP": 1.01163,
"BB_per_IP": 0.31395,
"SO_per_IP": 0.94186,
"HR_per_IP": 0.10465
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.0,
"ER": 29.0,
"R": 31.0,
"H": 56.0,
"BB": 19.0,
"SO": 53.0,
"HR": 4.0,
"BF": 236.0,
"Pitches": 921.0
},
"per_game": {
"IP": 5.1,
"ER": 2.9,
"R": 3.1,
"H": 5.6,
"BB": 1.9,
"SO": 5.3,
"HR": 0.4,
"BF": 23.6,
"Pitches": 92.1
},
"rates": {
"ERA": 4.9245,
"WHIP": 1.4151,
"ER_per_IP": 0.54717,
"H_per_IP": 1.0566,
"BB_per_IP": 0.35849,
"SO_per_IP": 1.0,
"HR_per_IP": 0.07547
}
},
"season": {
"games": 27,
"totals": {
"IP": 151.0,
"ER": 62.0,
"R": 64.0,
"H": 128.0,
"BB": 57.0,
"SO": 147.0,
"HR": 15.0,
"BF": 641.0,
"Pitches": 2540.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2963,
"R": 2.3704,
"H": 4.7407,
"BB": 2.1111,
"SO": 5.4444,
"HR": 0.5556,
"BF": 23.7407,
"Pitches": 94.0741
},
"rates": {
"ERA": 3.6954,
"WHIP": 1.2252,
"ER_per_IP": 0.4106,
"H_per_IP": 0.84768,
"BB_per_IP": 0.37748,
"SO_per_IP": 0.97351,
"HR_per_IP": 0.09934
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.615,
"predicted_H": 5.528,
"predicted_BB": 1.935,
"predicted_SO": 5.366,
"predicted_HR": 0.568,
"predicted_ERA": 4.2263,
"predicted_WHIP": 1.3402
}
},
"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.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.615,
"final": 1.9432,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.528,
"final": 4.8924,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.935,
"final": 1.546,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 8.0,
"form": 5.366,
"final": 6.4617,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.568,
"final": 0.3317,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.2263,
"final": 4.2263,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.3402,
"final": 1.3402,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 53.0,
"ER": 29,
"H": 56,
"BB": 19,
"SO": 53,
"HR": 4,
"ERA": 4.9245283018867925,
"WHIP": 1.4150943396226414,
"K9": 9.0,
"HR9": 0.6792452830188679,
"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-18T00:00:00"
},
"recent_form_boost": 1.0522644616940842,
"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": 4.0,
"predicted_BB": 1.0,
"predicted_SO": 8.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 27.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8438,
"prior_weight": 0.1562
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663567",
"player_name": "Peter Lambert",
"position": "Starter",
"team": "HOU",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 8.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 1.0,
"predicted_SO": 9.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 9.0,
"delta": 1.0,
"percent_delta": 0.125,
"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": 8.0,
"after": 9.0,
"delta": 1.0,
"percent_delta": 0.125,
"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": 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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 9.0,
"delta": 1.0,
"percent_delta": 0.125,
"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": 8.0,
"after": 9.0,
"delta": 1.0,
"percent_delta": 0.125,
"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": "HOU",
"games": 158,
"wins": 78,
"losses": 80,
"win_pct": 0.4937,
"runs_scored": 700.0,
"runs_allowed": 753.0,
"run_differential": -53.0,
"run_differential_per_game": -0.3354,
"avg_runs_scored": 4.4304,
"avg_runs_allowed": 4.7658,
"offense_index": 0.9875,
"defense_index": 0.9414,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 4.8,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.1165
},
"opponent": {
"team": "OAK",
"games": 158,
"wins": 63,
"losses": 95,
"win_pct": 0.3987,
"runs_scored": 686.0,
"runs_allowed": 903.0,
"run_differential": -217.0,
"run_differential_per_game": -1.3734,
"avg_runs_scored": 4.3418,
"avg_runs_allowed": 5.7152,
"offense_index": 0.9677,
"defense_index": 0.785,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 7.0,
"run_differential": -31.0
},
"available": true,
"quality_score": -0.3245
},
"edges": {
"quality_edge": 0.208,
"offense_edge": -0.0125,
"opponent_offense_edge": -0.0323,
"defense_strength": -0.0586,
"opponent_defense_weakness": 0.215,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 1.0079,
"run_prevention": 0.9903,
"strikeout": 1.0088
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663567",
"profile": {
"available": true,
"pitcher_id": "663567",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 613.0,
"k_percent": 22.9,
"bb_percent": 8.9,
"woba": 0.295,
"xwoba": 0.296,
"sweet_spot_percent": 33.6,
"barrel_batted_rate": 6.8,
"hard_hit_percent": 35.8,
"avg_best_speed": 77.5167,
"avg_hyper_speed": 93.5315,
"whiff_percent": 25.2,
"swing_percent": 48.9
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.3015,
"command_and_miss": 0.0729,
"regression_edge": -0.0286,
"xwoba_edge": 0.4286,
"barrel_edge": 0.0889,
"hard_hit_edge": 0.3,
"whiff_edge": 0.0143,
"bb_edge": 0.05,
"pitch_design_score": -0.0267
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663567",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 93,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 89.38687519162656,
"release_spin_rate": 2204.8030078841884,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 89.38687519162656,
"release_spin_rate": 2204.8030078841884,
"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.3869,
"release_spin_rate": 2204.803,
"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.0267,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.1907,
"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.1828,
"sample_weight": 1.0,
"run_prevention_factor": 0.9845,
"strikeout_factor": 1.0057,
"walk_factor": 0.996,
"homer_factor": 0.968,
"woba_minus_xwoba": -0.001,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "663567",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9845,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9845,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.996,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 0.968,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0057,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 1,
"predicted_SO": 9,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 23,
"Pitches": 99,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was +3."
},
{
"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": "HOMER_COMPONENT_MISS",
"severity": "warning",
"title": "Home-run component missed",
"detail": "Actual minus predicted home runs was +2."
}
],
"provenance": {
"prediction": "output/games/20260924_HOU@OAK.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260924 | 20260924_HOU@OAK | home | Mason Barnett | Mason Barnett | True | 3.2 | 6.0 | 7 | 3 | 4 | 1 | 6/4 | 1/2 | 4/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 7.159090909090909,
"WHIP": 1.75,
"IP": 44.0,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 3.867,
"recent_avg_IP": 3.867,
"last_start_IP": 3.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3931,
"sample_weight": 0.736,
"run_prevention_factor": 1.0334,
"strikeout_factor": 0.9798,
"walk_factor": 1.0677,
"homer_factor": 1.0511,
"regression_flag": "positive_pitcher_regression",
"k_percent": 20.5,
"bb_percent": 13.7,
"woba": 0.396,
"xwoba": 0.352,
"barrel_percent": 9.0,
"hard_hit_percent": 38.3,
"whiff_percent": 21.8
},
"espn_rank": {
"rank": 516,
"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.977,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6423,
"prior_weight": 0.3577
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "686930",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 4.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 19.1,
"ER": 22.0,
"R": 23.0,
"H": 28.0,
"BB": 15.0,
"SO": 19.0,
"HR": 7.0,
"BF": 100.0,
"Pitches": 384.0
},
"per_game": {
"IP": 4.0,
"ER": 4.4,
"R": 4.6,
"H": 5.6,
"BB": 3.0,
"SO": 3.8,
"HR": 1.4,
"BF": 20.0,
"Pitches": 76.8
},
"rates": {
"ERA": 10.2414,
"WHIP": 2.2241,
"ER_per_IP": 1.13793,
"H_per_IP": 1.44828,
"BB_per_IP": 0.77586,
"SO_per_IP": 0.98276,
"HR_per_IP": 0.36207
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 28.2,
"ER": 33.0,
"R": 34.0,
"H": 41.0,
"BB": 21.0,
"SO": 23.0,
"HR": 11.0,
"BF": 146.0,
"Pitches": 565.0
},
"per_game": {
"IP": 3.0,
"ER": 3.3,
"R": 3.4,
"H": 4.1,
"BB": 2.1,
"SO": 2.3,
"HR": 1.1,
"BF": 14.6,
"Pitches": 56.5
},
"rates": {
"ERA": 10.3605,
"WHIP": 2.1628,
"ER_per_IP": 1.15116,
"H_per_IP": 1.43023,
"BB_per_IP": 0.73256,
"SO_per_IP": 0.80233,
"HR_per_IP": 0.38372
}
},
"season": {
"games": 19,
"totals": {
"IP": 44.0,
"ER": 35.0,
"R": 36.0,
"H": 49.0,
"BB": 28.0,
"SO": 42.0,
"HR": 12.0,
"BF": 205.0,
"Pitches": 822.0
},
"per_game": {
"IP": 2.1,
"ER": 1.8421,
"R": 1.8947,
"H": 2.5789,
"BB": 1.4737,
"SO": 2.2105,
"HR": 0.6316,
"BF": 10.7895,
"Pitches": 43.2632
},
"rates": {
"ERA": 7.1591,
"WHIP": 1.75,
"ER_per_IP": 0.79545,
"H_per_IP": 1.11364,
"BB_per_IP": 0.63636,
"SO_per_IP": 0.95455,
"HR_per_IP": 0.27273
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.2,
"predicted_ER": 3.211,
"predicted_H": 4.544,
"predicted_BB": 2.227,
"predicted_SO": 3.394,
"predicted_HR": 1.027,
"predicted_ERA": 7.8527,
"predicted_WHIP": 1.8397
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5011,
"form_weight": 0.4989,
"form_reliability": 0.6423,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.977,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6423,
"prior_weight": 0.3577
},
"applied_metrics": {
"predicted_IP": {
"model": 4.1,
"form": 3.2,
"final": 4.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 3.211,
"final": 3.6064,
"source": "model_form_blend"
},
"predicted_H": {
"model": 6.0,
"form": 4.544,
"final": 5.2736,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 2.227,
"final": 1.6121,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 3.394,
"final": 3.6977,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 1.027,
"final": 1.0135,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 7.8527,
"final": 7.8527,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.8397,
"final": 1.8397,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 28.2,
"ER": 33,
"H": 41,
"BB": 21,
"SO": 23,
"HR": 11,
"ERA": 10.360465116279071,
"WHIP": 2.162790697674419,
"K9": 7.22093023255814,
"HR9": 3.4534883720930236,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 1.4324215085663652,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.333333333333333,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_BB": 1.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 8.977,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.6423,
"prior_weight": 0.3577
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 3.2,
"predicted_ER": 4,
"predicted_H": 6,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "686930",
"player_name": "Mason Barnett",
"position": "Starter",
"team": "OAK",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 4.3333,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 3.2,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.3333,
"after": 3.2,
"delta": -1.1333,
"percent_delta": -0.2615,
"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.3333,
"after": 3.2,
"delta": -1.1333,
"percent_delta": -0.2615,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 6.0,
"predicted_HR": 1.0,
"predicted_IP": 3.2,
"predicted_R": 4.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 3.2,
"after": 3.2,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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.3333,
"after": 3.2,
"delta": -1.1333,
"percent_delta": -0.2615,
"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.3333,
"after": 3.2,
"delta": -1.1333,
"percent_delta": -0.2615,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "OAK",
"games": 158,
"wins": 63,
"losses": 95,
"win_pct": 0.3987,
"runs_scored": 686.0,
"runs_allowed": 903.0,
"run_differential": -217.0,
"run_differential_per_game": -1.3734,
"avg_runs_scored": 4.3418,
"avg_runs_allowed": 5.7152,
"offense_index": 0.9677,
"defense_index": 0.785,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.9,
"avg_runs_allowed": 7.0,
"run_differential": -31.0
},
"available": true,
"quality_score": -0.3245
},
"opponent": {
"team": "HOU",
"games": 158,
"wins": 78,
"losses": 80,
"win_pct": 0.4937,
"runs_scored": 700.0,
"runs_allowed": 753.0,
"run_differential": -53.0,
"run_differential_per_game": -0.3354,
"avg_runs_scored": 4.4304,
"avg_runs_allowed": 4.7658,
"offense_index": 0.9875,
"defense_index": 0.9414,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 3,
"losses": 7,
"win_pct": 0.3,
"avg_runs_scored": 3.7,
"avg_runs_allowed": 4.8,
"run_differential": -11.0
},
"available": true,
"quality_score": -0.1165
},
"edges": {
"quality_edge": -0.208,
"offense_edge": -0.0323,
"opponent_offense_edge": -0.0125,
"defense_strength": -0.215,
"opponent_defense_weakness": 0.0586,
"recent_win_pct_edge": 0.0
},
"player_factors": {
"ip": 0.9857,
"run_prevention": 1.0299,
"strikeout": 0.9948
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "686930",
"profile": {
"available": true,
"pitcher_id": "686930",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 184.0,
"k_percent": 20.5,
"bb_percent": 13.7,
"woba": 0.396,
"xwoba": 0.352,
"sweet_spot_percent": 33.8,
"barrel_batted_rate": 9.0,
"hard_hit_percent": 38.3,
"avg_best_speed": 79.5635,
"avg_hyper_speed": 94.2875,
"whiff_percent": 21.8,
"swing_percent": 43.1
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.9453,
"command_and_miss": -0.4914,
"regression_edge": 1.2571,
"xwoba_edge": -1.1714,
"barrel_edge": -0.4,
"hard_hit_edge": -0.0571,
"whiff_edge": -0.4714,
"bb_edge": -1.15,
"pitch_design_score": -0.033
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "686930",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 72,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 72,
"pitch_usage": 0.0,
"release_speed": 89.27450273626764,
"release_spin_rate": 2374.2742610503064,
"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": 72,
"pitch_usage": 0.0,
"release_speed": 89.27450273626764,
"release_spin_rate": 2374.2742610503064,
"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.2745,
"release_spin_rate": 2374.2743,
"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.033,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2357,
"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.3931,
"sample_weight": 0.736,
"run_prevention_factor": 1.0334,
"strikeout_factor": 0.9798,
"walk_factor": 1.0677,
"homer_factor": 1.0511,
"woba_minus_xwoba": 0.044,
"regression_flag": "positive_pitcher_regression",
"espn_rank": {
"available": false,
"player_id": "686930",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 5.0,
"factor": 1.0246,
"adjusted": 5
},
"predicted_H": {
"original": 6.0,
"factor": 1.0246,
"adjusted": 6
},
"predicted_BB": {
"original": 3.0,
"factor": 1.0498,
"adjusted": 3
},
"predicted_HR": {
"original": 2.0,
"factor": 1.0376,
"adjusted": 2
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9851,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 3.2,
"predicted_H": 6,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 4,
"predicted_HR": 1,
"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 +7 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260924_HOU@OAK.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260924 | 20260924_LAA@SEA | away | Grayson Rodriguez | Grayson Rodriguez | True | 5.0 | 5.0 | 0 | 5 | 4 | -1 | 5/5 | 3/5 | 5/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.95729537366548,
"WHIP": 1.5373665480427046,
"IP": 93.2,
"games_started": null,
"games_pitched": 19,
"role_avg_IP": 4.93,
"recent_avg_IP": 5.533,
"last_start_IP": 6.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.5731,
"sample_weight": 1.0,
"run_prevention_factor": 1.0487,
"strikeout_factor": 0.9789,
"walk_factor": 0.998,
"homer_factor": 1.1108,
"regression_flag": "neutral",
"k_percent": 19.7,
"bb_percent": 9.0,
"woba": 0.363,
"xwoba": 0.357,
"barrel_percent": 8.9,
"hard_hit_percent": 45.1,
"whiff_percent": 23.7
},
"espn_rank": {
"rank": 852,
"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": "680570",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 19,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 27.2,
"ER": 15.0,
"R": 15.0,
"H": 35.0,
"BB": 8.0,
"SO": 22.0,
"HR": 5.0,
"BF": 123.0,
"Pitches": 460.0
},
"per_game": {
"IP": 5.2,
"ER": 3.0,
"R": 3.0,
"H": 7.0,
"BB": 1.6,
"SO": 4.4,
"HR": 1.0,
"BF": 24.6,
"Pitches": 92.0
},
"rates": {
"ERA": 4.8795,
"WHIP": 1.5542,
"ER_per_IP": 0.54217,
"H_per_IP": 1.26506,
"BB_per_IP": 0.28916,
"SO_per_IP": 0.79518,
"HR_per_IP": 0.18072
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 54.2,
"ER": 25.0,
"R": 28.0,
"H": 55.0,
"BB": 19.0,
"SO": 53.0,
"HR": 8.0,
"BF": 235.0,
"Pitches": 927.0
},
"per_game": {
"IP": 5.1,
"ER": 2.5,
"R": 2.8,
"H": 5.5,
"BB": 1.9,
"SO": 5.3,
"HR": 0.8,
"BF": 23.5,
"Pitches": 92.7
},
"rates": {
"ERA": 4.1159,
"WHIP": 1.3537,
"ER_per_IP": 0.45732,
"H_per_IP": 1.0061,
"BB_per_IP": 0.34756,
"SO_per_IP": 0.96951,
"HR_per_IP": 0.14634
}
},
"season": {
"games": 19,
"totals": {
"IP": 93.2,
"ER": 62.0,
"R": 67.0,
"H": 106.0,
"BB": 38.0,
"SO": 83.0,
"HR": 15.0,
"BF": 421.0,
"Pitches": 1667.0
},
"per_game": {
"IP": 5.0,
"ER": 3.2632,
"R": 3.5263,
"H": 5.5789,
"BB": 2.0,
"SO": 4.3684,
"HR": 0.7895,
"BF": 22.1579,
"Pitches": 87.7368
},
"rates": {
"ERA": 5.9573,
"WHIP": 1.5374,
"ER_per_IP": 0.66192,
"H_per_IP": 1.13167,
"BB_per_IP": 0.40569,
"SO_per_IP": 0.88612,
"HR_per_IP": 0.16014
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.867,
"predicted_H": 6.011,
"predicted_BB": 1.846,
"predicted_SO": 4.792,
"predicted_HR": 0.87,
"predicted_ERA": 4.7794,
"predicted_WHIP": 1.4552
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.438,
"form_weight": 0.562,
"form_reliability": 0.7917,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
},
"applied_metrics": {
"predicted_IP": {
"model": 5.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 2.867,
"final": 3.8013,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 6.011,
"final": 5.5682,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.846,
"final": 2.3515,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.792,
"final": 4.8831,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 2.0,
"form": 0.87,
"final": 1.3649,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.7794,
"final": 4.7794,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4552,
"final": 1.4552,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 54.2,
"ER": 25,
"H": 55,
"BB": 19,
"SO": 53,
"HR": 8,
"ERA": 4.115853658536585,
"WHIP": 1.3536585365853657,
"K9": 8.72560975609756,
"HR9": 1.3170731707317072,
"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-18T00:00:00"
},
"recent_form_boost": 0.9597526692412539,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_BB": 3.0,
"predicted_SO": 5.0,
"predicted_HR": 2.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 19.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7917,
"prior_weight": 0.2083
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 5,
"predicted_H": 5,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 2
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "680570",
"player_name": "Grayson Rodriguez",
"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": 3.0,
"predicted_ER": 5.0,
"predicted_H": 5.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": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"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.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 5.0,
"predicted_H": 5.0,
"predicted_HR": 2.0,
"predicted_IP": 5.0,
"predicted_R": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"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.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "LAA",
"games": 158,
"wins": 60,
"losses": 98,
"win_pct": 0.3797,
"runs_scored": 635.0,
"runs_allowed": 728.0,
"run_differential": -93.0,
"run_differential_per_game": -0.5886,
"avg_runs_scored": 4.019,
"avg_runs_allowed": 4.6076,
"offense_index": 0.8958,
"defense_index": 0.9737,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 5.4,
"run_differential": -18.0
},
"available": true,
"quality_score": -0.2094
},
"opponent": {
"team": "SEA",
"games": 158,
"wins": 74,
"losses": 84,
"win_pct": 0.4684,
"runs_scored": 640.0,
"runs_allowed": 702.0,
"run_differential": -62.0,
"run_differential_per_game": -0.3924,
"avg_runs_scored": 4.0506,
"avg_runs_allowed": 4.443,
"offense_index": 0.9028,
"defense_index": 1.0098,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 4.1,
"run_differential": 13.0
},
"available": true,
"quality_score": -0.075
},
"edges": {
"quality_edge": -0.1344,
"offense_edge": -0.1042,
"opponent_offense_edge": -0.0972,
"defense_strength": -0.0263,
"opponent_defense_weakness": -0.0098,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 0.9977,
"run_prevention": 0.9938,
"strikeout": 1.0037
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "680570",
"profile": {
"available": true,
"pitcher_id": "680570",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 381.0,
"k_percent": 19.7,
"bb_percent": 9.0,
"woba": 0.363,
"xwoba": 0.357,
"sweet_spot_percent": 35.5,
"barrel_batted_rate": 8.9,
"hard_hit_percent": 45.1,
"avg_best_speed": 79.5298,
"avg_hyper_speed": 94.8436,
"whiff_percent": 23.7,
"swing_percent": 49.1
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.9554,
"command_and_miss": -0.2129,
"regression_edge": 0.1714,
"xwoba_edge": -1.3143,
"barrel_edge": -0.3778,
"hard_hit_edge": -1.0286,
"whiff_edge": -0.2,
"bb_edge": 0.025,
"pitch_design_score": 0.0015
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "680570",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 93,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 89.89029909471627,
"release_spin_rate": 2183.4815920333936,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 89.89029909471627,
"release_spin_rate": 2183.4815920333936,
"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.8903,
"release_spin_rate": 2183.4816,
"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.0015,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.0106,
"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.5731,
"sample_weight": 1.0,
"run_prevention_factor": 1.0487,
"strikeout_factor": 0.9789,
"walk_factor": 0.998,
"homer_factor": 1.1108,
"woba_minus_xwoba": 0.006,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "680570",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.0487,
"adjusted": 3
},
"predicted_H": {
"original": 6.0,
"factor": 1.0487,
"adjusted": 6
},
"predicted_BB": {
"original": 2.0,
"factor": 0.998,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1108,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9789,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 2,
"box_score_synced": true,
"BF": 23,
"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."
}
],
"provenance": {
"prediction": "output/games/20260924_LAA@SEA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260924 | 20260924_LAA@SEA | home | Bryan Woo | Bryan Woo | True | 5.2 | 5.1 | -1 | 3 | 4 | 1 | 3/7 | 1/3 | 7/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.9184890656063622,
"WHIP": 1.0795228628230618,
"IP": 167.2,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 5.782,
"recent_avg_IP": 5.867,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2083,
"sample_weight": 1.0,
"run_prevention_factor": 0.9823,
"strikeout_factor": 1.0126,
"walk_factor": 0.924,
"homer_factor": 1.009,
"regression_flag": "neutral",
"k_percent": 24.4,
"bb_percent": 5.3,
"woba": 0.281,
"xwoba": 0.293,
"barrel_percent": 7.0,
"hard_hit_percent": 42.8,
"whiff_percent": 24.9
},
"espn_rank": {
"rank": 79,
"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": "693433",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.1,
"ER": 10.0,
"R": 12.0,
"H": 24.0,
"BB": 7.0,
"SO": 30.0,
"HR": 3.0,
"BF": 121.0,
"Pitches": 443.0
},
"per_game": {
"IP": 6.0,
"ER": 2.0,
"R": 2.4,
"H": 4.8,
"BB": 1.4,
"SO": 6.0,
"HR": 0.6,
"BF": 24.2,
"Pitches": 88.6
},
"rates": {
"ERA": 3.0682,
"WHIP": 1.0568,
"ER_per_IP": 0.34091,
"H_per_IP": 0.81818,
"BB_per_IP": 0.23864,
"SO_per_IP": 1.02273,
"HR_per_IP": 0.10227
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 57.1,
"ER": 22.0,
"R": 24.0,
"H": 47.0,
"BB": 14.0,
"SO": 58.0,
"HR": 6.0,
"BF": 234.0,
"Pitches": 887.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2,
"R": 2.4,
"H": 4.7,
"BB": 1.4,
"SO": 5.8,
"HR": 0.6,
"BF": 23.4,
"Pitches": 88.7
},
"rates": {
"ERA": 3.4535,
"WHIP": 1.064,
"ER_per_IP": 0.38372,
"H_per_IP": 0.81977,
"BB_per_IP": 0.24419,
"SO_per_IP": 1.01163,
"HR_per_IP": 0.10465
}
},
"season": {
"games": 29,
"totals": {
"IP": 167.2,
"ER": 73.0,
"R": 79.0,
"H": 145.0,
"BB": 36.0,
"SO": 167.0,
"HR": 18.0,
"BF": 684.0,
"Pitches": 2561.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5172,
"R": 2.7241,
"H": 5.0,
"BB": 1.2414,
"SO": 5.7586,
"HR": 0.6207,
"BF": 23.5862,
"Pitches": 88.3103
},
"rates": {
"ERA": 3.9185,
"WHIP": 1.0795,
"ER_per_IP": 0.43539,
"H_per_IP": 0.86481,
"BB_per_IP": 0.21471,
"SO_per_IP": 0.99602,
"HR_per_IP": 0.10736
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.288,
"predicted_H": 4.93,
"predicted_BB": 1.486,
"predicted_SO": 5.808,
"predicted_HR": 0.641,
"predicted_ERA": 3.5529,
"predicted_WHIP": 1.1072
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4121,
"form_weight": 0.5879,
"form_reliability": 0.8529,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.288,
"final": 2.5815,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.93,
"final": 4.1346,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.486,
"final": 1.2857,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 5.808,
"final": 6.2993,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.641,
"final": 0.3768,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.5529,
"final": 3.5529,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1072,
"final": 1.1072,
"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.1,
"ER": 22,
"H": 47,
"BB": 14,
"SO": 58,
"HR": 6,
"ERA": 3.4534883720930236,
"WHIP": 1.0639534883720931,
"K9": 9.104651162790699,
"HR9": 0.9418604651162792,
"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-09-18T00:00:00"
},
"recent_form_boost": 0.8779939483110215,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 3.0,
"predicted_H": 3.0,
"predicted_BB": 1.0,
"predicted_SO": 7.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.2,
"predicted_ER": 3,
"predicted_H": 3,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "693433",
"player_name": "Bryan Woo",
"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": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.6667,
"predicted_SO": 7.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "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": 3.0,
"predicted_HR": 0.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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"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": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 3.0,
"predicted_SO": 7.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SEA",
"games": 158,
"wins": 74,
"losses": 84,
"win_pct": 0.4684,
"runs_scored": 640.0,
"runs_allowed": 702.0,
"run_differential": -62.0,
"run_differential_per_game": -0.3924,
"avg_runs_scored": 4.0506,
"avg_runs_allowed": 4.443,
"offense_index": 0.9028,
"defense_index": 1.0098,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 5.4,
"avg_runs_allowed": 4.1,
"run_differential": 13.0
},
"available": true,
"quality_score": -0.075
},
"opponent": {
"team": "LAA",
"games": 158,
"wins": 60,
"losses": 98,
"win_pct": 0.3797,
"runs_scored": 635.0,
"runs_allowed": 728.0,
"run_differential": -93.0,
"run_differential_per_game": -0.5886,
"avg_runs_scored": 4.019,
"avg_runs_allowed": 4.6076,
"offense_index": 0.8958,
"defense_index": 0.9737,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.6,
"avg_runs_allowed": 5.4,
"run_differential": -18.0
},
"available": true,
"quality_score": -0.2094
},
"edges": {
"quality_edge": 0.1344,
"offense_edge": -0.0972,
"opponent_offense_edge": -0.1042,
"defense_strength": 0.0098,
"opponent_defense_weakness": 0.0263,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0098,
"run_prevention": 0.9756,
"strikeout": 1.0124
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "693433",
"profile": {
"available": true,
"pitcher_id": "693433",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 655.0,
"k_percent": 24.4,
"bb_percent": 5.3,
"woba": 0.281,
"xwoba": 0.293,
"sweet_spot_percent": 35.9,
"barrel_batted_rate": 7.0,
"hard_hit_percent": 42.8,
"avg_best_speed": 78.6007,
"avg_hyper_speed": 94.3637,
"whiff_percent": 24.9,
"swing_percent": 53.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.2544,
"command_and_miss": 0.3343,
"regression_edge": -0.3429,
"xwoba_edge": 0.5143,
"barrel_edge": 0.0444,
"hard_hit_edge": -0.7,
"whiff_edge": -0.0286,
"bb_edge": 0.95,
"pitch_design_score": 0.1652
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "693433",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 86,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 92.81366532931159,
"release_spin_rate": 2265.4298134012292,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 92.81366532931159,
"release_spin_rate": 2265.4298134012292,
"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.8137,
"release_spin_rate": 2265.4298,
"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.1652,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.18,
"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.2083,
"sample_weight": 1.0,
"run_prevention_factor": 0.9823,
"strikeout_factor": 1.0126,
"walk_factor": 0.924,
"homer_factor": 1.009,
"woba_minus_xwoba": -0.012,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "693433",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9823,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9823,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.924,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.009,
"adjusted": 1
},
"predicted_SO": {
"original": 6.0,
"factor": 1.0126,
"adjusted": 6
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 3,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"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/20260924_LAA@SEA.json (current server JSON; no revision substitution)",
"pregame_season": "embedded season totals in the current server JSON; ESPN metrics are retained in the model context",
"prior_history": "data/all_players_stats.csv; unique real appearances strictly before the target date",
"target_game": "Official MLB Stats API live game feed",
"postgame_season": "derived from pregame season totals plus the official target-game starter line"
}
} |
| 20260924 | 20260924_MIA@CHC | away | Tyler Phillips | Tyler Phillips | True | 5.0 | 4.0 | -3 | 1 | 0 | -1 | 4/3 | 5/4 | 3/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.448369565217391,
"WHIP": 1.3125,
"IP": 122.2,
"games_started": null,
"games_pitched": 36,
"role_avg_IP": 4.526,
"recent_avg_IP": 4.4,
"last_start_IP": 3.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2769,
"sample_weight": 1.0,
"run_prevention_factor": 1.0235,
"strikeout_factor": 0.9886,
"walk_factor": 1.018,
"homer_factor": 1.055,
"regression_flag": "neutral",
"k_percent": 19.0,
"bb_percent": 10.0,
"woba": 0.314,
"xwoba": 0.33,
"barrel_percent": 7.9,
"hard_hit_percent": 42.5,
"whiff_percent": 26.1
},
"espn_rank": {
"rank": 88,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 122.2,
"season_ERA": 3.448,
"season_WHIP": 1.312,
"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": 36.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.878,
"prior_weight": 0.122
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "663969",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 36,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.0,
"ER": 6.0,
"R": 6.0,
"H": 13.0,
"BB": 10.0,
"SO": 20.0,
"HR": 4.0,
"BF": 86.0,
"Pitches": 347.0
},
"per_game": {
"IP": 4.1,
"ER": 1.2,
"R": 1.2,
"H": 2.6,
"BB": 2.0,
"SO": 4.0,
"HR": 0.8,
"BF": 17.2,
"Pitches": 69.4
},
"rates": {
"ERA": 2.4545,
"WHIP": 1.0455,
"ER_per_IP": 0.27273,
"H_per_IP": 0.59091,
"BB_per_IP": 0.45455,
"SO_per_IP": 0.90909,
"HR_per_IP": 0.18182
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 43.1,
"ER": 16.0,
"R": 16.0,
"H": 35.0,
"BB": 16.0,
"SO": 41.0,
"HR": 8.0,
"BF": 178.0,
"Pitches": 683.0
},
"per_game": {
"IP": 4.1,
"ER": 1.6,
"R": 1.6,
"H": 3.5,
"BB": 1.6,
"SO": 4.1,
"HR": 0.8,
"BF": 17.8,
"Pitches": 68.3
},
"rates": {
"ERA": 3.3231,
"WHIP": 1.1769,
"ER_per_IP": 0.36923,
"H_per_IP": 0.80769,
"BB_per_IP": 0.36923,
"SO_per_IP": 0.94615,
"HR_per_IP": 0.18462
}
},
"season": {
"games": 36,
"totals": {
"IP": 122.2,
"ER": 47.0,
"R": 50.0,
"H": 109.0,
"BB": 52.0,
"SO": 99.0,
"HR": 17.0,
"BF": 520.0,
"Pitches": 1964.0
},
"per_game": {
"IP": 3.1,
"ER": 1.3056,
"R": 1.3889,
"H": 3.0278,
"BB": 1.4444,
"SO": 2.75,
"HR": 0.4722,
"BF": 14.4444,
"Pitches": 54.5556
},
"rates": {
"ERA": 3.4484,
"WHIP": 1.3125,
"ER_per_IP": 0.38315,
"H_per_IP": 0.88859,
"BB_per_IP": 0.42391,
"SO_per_IP": 0.80707,
"HR_per_IP": 0.13859
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.1,
"predicted_ER": 1.487,
"predicted_H": 3.211,
"predicted_BB": 1.752,
"predicted_SO": 3.841,
"predicted_HR": 0.725,
"predicted_ERA": 3.1572,
"predicted_WHIP": 1.1709
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4015,
"form_weight": 0.5985,
"form_reliability": 0.878,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 36.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.878,
"prior_weight": 0.122
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.1,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 1.487,
"final": 1.2914,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 3.211,
"final": 3.5278,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 5.0,
"form": 1.752,
"final": 3.0562,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 3.841,
"final": 3.5033,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.725,
"final": 0.4339,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.1572,
"final": 3.1572,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1709,
"final": 1.1709,
"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.1,
"ER": 16,
"H": 35,
"BB": 16,
"SO": 41,
"HR": 8,
"ERA": 3.3230769230769233,
"WHIP": 1.176923076923077,
"K9": 8.515384615384617,
"HR9": 1.6615384615384616,
"games_pitched": 10,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 0.8661469000104848,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_BB": 5.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 36.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.878,
"prior_weight": 0.122
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "663969",
"player_name": "Tyler Phillips",
"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": 5.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 5.0,
"predicted_ER": 1.0,
"predicted_H": 4.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 1.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 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": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null,
"has_material_change": false,
"dominant_effect": "neutral"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "MIA",
"games": 158,
"wins": 78,
"losses": 80,
"win_pct": 0.4937,
"runs_scored": 703.0,
"runs_allowed": 699.0,
"run_differential": 4.0,
"run_differential_per_game": 0.0253,
"avg_runs_scored": 4.4494,
"avg_runs_allowed": 4.4241,
"offense_index": 0.9917,
"defense_index": 1.0141,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.6,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0327
},
"opponent": {
"team": "CHC",
"games": 158,
"wins": 87,
"losses": 71,
"win_pct": 0.5506,
"runs_scored": 839.0,
"runs_allowed": 694.0,
"run_differential": 145.0,
"run_differential_per_game": 0.9177,
"avg_runs_scored": 5.3101,
"avg_runs_allowed": 4.3924,
"offense_index": 1.1836,
"defense_index": 1.0214,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.0,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.1555
},
"edges": {
"quality_edge": -0.1228,
"offense_edge": -0.0083,
"opponent_offense_edge": 0.1836,
"defense_strength": 0.0141,
"opponent_defense_weakness": -0.0214,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9882,
"run_prevention": 1.0341,
"strikeout": 0.9816
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "663969",
"profile": {
"available": true,
"pitcher_id": "663969",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 494.0,
"k_percent": 19.0,
"bb_percent": 10.0,
"woba": 0.314,
"xwoba": 0.33,
"sweet_spot_percent": 32.3,
"barrel_batted_rate": 7.9,
"hard_hit_percent": 42.5,
"avg_best_speed": 79.1111,
"avg_hyper_speed": 94.3069,
"whiff_percent": 26.1,
"swing_percent": 45.8
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.3166,
"command_and_miss": -0.1879,
"regression_edge": -0.4571,
"xwoba_edge": -0.5429,
"barrel_edge": -0.1556,
"hard_hit_edge": -0.6571,
"whiff_edge": 0.1429,
"bb_edge": -0.225,
"pitch_design_score": -0.0629
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "663969",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 67,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 67,
"pitch_usage": 0.0,
"release_speed": 88.74043596565609,
"release_spin_rate": 2055.6265692430447,
"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": 67,
"pitch_usage": 0.0,
"release_speed": 88.74043596565609,
"release_spin_rate": 2055.6265692430447,
"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.7404,
"release_spin_rate": 2055.6266,
"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.0629,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.4493,
"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.2769,
"sample_weight": 1.0,
"run_prevention_factor": 1.0235,
"strikeout_factor": 0.9886,
"walk_factor": 1.018,
"homer_factor": 1.055,
"woba_minus_xwoba": -0.016,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "663969",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0235,
"adjusted": 2
},
"predicted_H": {
"original": 3.0,
"factor": 1.0235,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 1.018,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.055,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9886,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 4,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 5,
"predicted_SO": 3,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"Pitches": 107,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_MIA@CHC | home | Matthew Boyd | Matthew Boyd | True | 5.2 | 7.0 | 4 | 3 | 1 | -2 | 4/5 | 1/2 | 1/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.061281337047354,
"WHIP": 1.2200557103064067,
"IP": 119.2,
"games_started": null,
"games_pitched": 21,
"role_avg_IP": 5.698,
"recent_avg_IP": 5.733,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.2782,
"sample_weight": 1.0,
"run_prevention_factor": 1.0236,
"strikeout_factor": 0.968,
"walk_factor": 0.968,
"homer_factor": 1.0357,
"regression_flag": "neutral",
"k_percent": 18.9,
"bb_percent": 7.5,
"woba": 0.307,
"xwoba": 0.332,
"barrel_percent": 8.1,
"hard_hit_percent": 38.2,
"whiff_percent": 22.6
},
"espn_rank": {
"rank": 224,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "571510",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 21,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.2,
"ER": 12.0,
"R": 13.0,
"H": 24.0,
"BB": 9.0,
"SO": 22.0,
"HR": 1.0,
"BF": 112.0,
"Pitches": 450.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.6,
"H": 4.8,
"BB": 1.8,
"SO": 4.4,
"HR": 0.2,
"BF": 22.4,
"Pitches": 90.0
},
"rates": {
"ERA": 3.7674,
"WHIP": 1.1512,
"ER_per_IP": 0.4186,
"H_per_IP": 0.83721,
"BB_per_IP": 0.31395,
"SO_per_IP": 0.76744,
"HR_per_IP": 0.03488
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.2,
"ER": 29.0,
"R": 32.0,
"H": 53.0,
"BB": 20.0,
"SO": 38.0,
"HR": 9.0,
"BF": 247.0,
"Pitches": 912.0
},
"per_game": {
"IP": 6.0,
"ER": 2.9,
"R": 3.2,
"H": 5.3,
"BB": 2.0,
"SO": 3.8,
"HR": 0.9,
"BF": 24.7,
"Pitches": 91.2
},
"rates": {
"ERA": 4.3022,
"WHIP": 1.2033,
"ER_per_IP": 0.47802,
"H_per_IP": 0.87363,
"BB_per_IP": 0.32967,
"SO_per_IP": 0.62637,
"HR_per_IP": 0.14835
}
},
"season": {
"games": 21,
"totals": {
"IP": 119.2,
"ER": 54.0,
"R": 58.0,
"H": 109.0,
"BB": 37.0,
"SO": 93.0,
"HR": 15.0,
"BF": 493.0,
"Pitches": 1867.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5714,
"R": 2.7619,
"H": 5.1905,
"BB": 1.7619,
"SO": 4.4286,
"HR": 0.7143,
"BF": 23.4762,
"Pitches": 88.9048
},
"rates": {
"ERA": 4.0613,
"WHIP": 1.2201,
"ER_per_IP": 0.45125,
"H_per_IP": 0.91086,
"BB_per_IP": 0.30919,
"SO_per_IP": 0.77716,
"HR_per_IP": 0.12535
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.641,
"predicted_H": 5.112,
"predicted_BB": 1.898,
"predicted_SO": 4.389,
"predicted_HR": 0.595,
"predicted_ERA": 4.1253,
"predicted_WHIP": 1.2169
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4312,
"form_weight": 0.5688,
"form_reliability": 0.8077,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 3.0,
"form": 2.641,
"final": 2.7958,
"source": "model_form_blend"
},
"predicted_H": {
"model": 4.0,
"form": 5.112,
"final": 4.6325,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.898,
"final": 1.5107,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 1.0,
"form": 4.389,
"final": 2.9275,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.595,
"final": 0.3384,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.1253,
"final": 4.1253,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2169,
"final": 1.2169,
"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": 29,
"H": 53,
"BB": 20,
"SO": 38,
"HR": 9,
"ERA": 4.302197802197802,
"WHIP": 1.2032967032967032,
"K9": 5.637362637362638,
"HR9": 1.3351648351648353,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.9769573395709243,
"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": 1.0,
"predicted_SO": 1.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 21.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8077,
"prior_weight": 0.1923
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "571510",
"player_name": "Matthew Boyd",
"position": "Starter",
"team": "CHC",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 3.0,
"predicted_H": 4.0,
"predicted_HR": 0.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": "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": 0.0,
"predicted_IP": 5.2,
"predicted_R": 3.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": 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.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": 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": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "CHC",
"games": 158,
"wins": 87,
"losses": 71,
"win_pct": 0.5506,
"runs_scored": 839.0,
"runs_allowed": 694.0,
"run_differential": 145.0,
"run_differential_per_game": 0.9177,
"avg_runs_scored": 5.3101,
"avg_runs_allowed": 4.3924,
"offense_index": 1.1836,
"defense_index": 1.0214,
"current_streak": "L2",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.0,
"run_differential": 7.0
},
"available": true,
"quality_score": 0.1555
},
"opponent": {
"team": "MIA",
"games": 158,
"wins": 78,
"losses": 80,
"win_pct": 0.4937,
"runs_scored": 703.0,
"runs_allowed": 699.0,
"run_differential": 4.0,
"run_differential_per_game": 0.0253,
"avg_runs_scored": 4.4494,
"avg_runs_allowed": 4.4241,
"offense_index": 0.9917,
"defense_index": 1.0141,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.6,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0327
},
"edges": {
"quality_edge": 0.1228,
"offense_edge": 0.1836,
"opponent_offense_edge": -0.0083,
"defense_strength": 0.0214,
"opponent_defense_weakness": -0.0141,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0059,
"run_prevention": 0.9904,
"strikeout": 1.0043
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "571510",
"profile": {
"available": true,
"pitcher_id": "571510",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 473.0,
"k_percent": 18.9,
"bb_percent": 7.5,
"woba": 0.307,
"xwoba": 0.332,
"sweet_spot_percent": 33.4,
"barrel_batted_rate": 8.1,
"hard_hit_percent": 38.2,
"avg_best_speed": 76.9008,
"avg_hyper_speed": 94.0093,
"whiff_percent": 22.6,
"swing_percent": 48.8
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.2172,
"command_and_miss": -0.2443,
"regression_edge": -0.7143,
"xwoba_edge": -0.6,
"barrel_edge": -0.2,
"hard_hit_edge": -0.0429,
"whiff_edge": -0.3571,
"bb_edge": 0.4,
"pitch_design_score": -0.2701
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "571510",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 93,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 85.0398205022295,
"release_spin_rate": 2211.404515069364,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 93,
"pitch_usage": 0.0,
"release_speed": 85.0398205022295,
"release_spin_rate": 2211.404515069364,
"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.0398,
"release_spin_rate": 2211.4045,
"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.2701,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.9295,
"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.2782,
"sample_weight": 1.0,
"run_prevention_factor": 1.0236,
"strikeout_factor": 0.968,
"walk_factor": 0.968,
"homer_factor": 1.0357,
"woba_minus_xwoba": -0.025,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "571510",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0236,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.0236,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.968,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 1.0357,
"adjusted": 0
},
"predicted_SO": {
"original": 4.0,
"factor": 0.968,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 4,
"predicted_R": 3,
"predicted_ER": 3,
"predicted_BB": 1,
"predicted_SO": 1,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 95,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_MIL@PHI | away | Shane Drohan | Shane Drohan | True | 4.2 | 2.2 | -6 | 1 | 1 | 0 | 3/3 | 2/2 | 3/2 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.2631578947368425,
"WHIP": 1.3296398891966759,
"IP": 120.1,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.074,
"recent_avg_IP": 4.6,
"last_start_IP": 3.2,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.1241,
"sample_weight": 1.0,
"run_prevention_factor": 0.9895,
"strikeout_factor": 1.024,
"walk_factor": 0.982,
"homer_factor": 1.023,
"regression_flag": "neutral",
"k_percent": 23.7,
"bb_percent": 8.2,
"woba": 0.325,
"xwoba": 0.302,
"barrel_percent": 8.8,
"hard_hit_percent": 38.3,
"whiff_percent": 27.6
},
"espn_rank": {
"rank": 318,
"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": "675660",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 15.0,
"ER": 12.0,
"R": 12.0,
"H": 18.0,
"BB": 6.0,
"SO": 17.0,
"HR": 5.0,
"BF": 66.0,
"Pitches": 271.0
},
"per_game": {
"IP": 3.0,
"ER": 2.4,
"R": 2.4,
"H": 3.6,
"BB": 1.2,
"SO": 3.4,
"HR": 1.0,
"BF": 13.2,
"Pitches": 54.2
},
"rates": {
"ERA": 7.2,
"WHIP": 1.6,
"ER_per_IP": 0.8,
"H_per_IP": 1.2,
"BB_per_IP": 0.4,
"SO_per_IP": 1.13333,
"HR_per_IP": 0.33333
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 38.1,
"ER": 25.0,
"R": 25.0,
"H": 43.0,
"BB": 19.0,
"SO": 39.0,
"HR": 8.0,
"BF": 168.0,
"Pitches": 658.0
},
"per_game": {
"IP": 4.0,
"ER": 2.5,
"R": 2.5,
"H": 4.3,
"BB": 1.9,
"SO": 3.9,
"HR": 0.8,
"BF": 16.8,
"Pitches": 65.8
},
"rates": {
"ERA": 5.8696,
"WHIP": 1.6174,
"ER_per_IP": 0.65217,
"H_per_IP": 1.12174,
"BB_per_IP": 0.49565,
"SO_per_IP": 1.01739,
"HR_per_IP": 0.2087
}
},
"season": {
"games": 31,
"totals": {
"IP": 120.1,
"ER": 57.0,
"R": 62.0,
"H": 118.0,
"BB": 42.0,
"SO": 121.0,
"HR": 14.0,
"BF": 510.0,
"Pitches": 1933.0
},
"per_game": {
"IP": 4.0,
"ER": 1.8387,
"R": 2.0,
"H": 3.8065,
"BB": 1.3548,
"SO": 3.9032,
"HR": 0.4516,
"BF": 16.4516,
"Pitches": 62.3548
},
"rates": {
"ERA": 4.2632,
"WHIP": 1.3296,
"ER_per_IP": 0.47368,
"H_per_IP": 0.98061,
"BB_per_IP": 0.34903,
"SO_per_IP": 1.00554,
"HR_per_IP": 0.11634
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 3.2,
"predicted_ER": 2.442,
"predicted_H": 4.107,
"predicted_BB": 1.544,
"predicted_SO": 3.887,
"predicted_HR": 0.862,
"predicted_ERA": 5.9315,
"predicted_WHIP": 1.5251
}
},
"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": 3.2,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 1.0,
"form": 2.442,
"final": 1.8527,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.107,
"final": 3.6546,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.544,
"final": 1.7304,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 3.887,
"final": 3.5245,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.862,
"final": 0.5097,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.9315,
"final": 5.9315,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5251,
"final": 1.5251,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 38.1,
"ER": 25,
"H": 43,
"BB": 19,
"SO": 39,
"HR": 8,
"ERA": 5.869565217391305,
"WHIP": 1.6173913043478263,
"K9": 9.156521739130437,
"HR9": 1.8782608695652177,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 1.1636385388064716,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_BB": 2.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "675660",
"player_name": "Shane Drohan",
"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": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.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": 2.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 4.2,
"predicted_R": 1.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": 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": 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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 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": "MIL",
"games": 158,
"wins": 99,
"losses": 59,
"win_pct": 0.6266,
"runs_scored": 810.0,
"runs_allowed": 607.0,
"run_differential": 203.0,
"run_differential_per_game": 1.2848,
"avg_runs_scored": 5.1266,
"avg_runs_allowed": 3.8418,
"offense_index": 1.143,
"defense_index": 1.1675,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 3.7,
"run_differential": 11.0
},
"available": true,
"quality_score": 0.3352
},
"opponent": {
"team": "PHI",
"games": 158,
"wins": 87,
"losses": 71,
"win_pct": 0.5506,
"runs_scored": 704.0,
"runs_allowed": 676.0,
"run_differential": 28.0,
"run_differential_per_game": 0.1772,
"avg_runs_scored": 4.4557,
"avg_runs_allowed": 4.2785,
"offense_index": 0.9934,
"defense_index": 1.0483,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.8,
"run_differential": -8.0
},
"available": true,
"quality_score": 0.0647
},
"edges": {
"quality_edge": 0.2705,
"offense_edge": 0.143,
"opponent_offense_edge": -0.0066,
"defense_strength": 0.1675,
"opponent_defense_weakness": -0.0483,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0161,
"run_prevention": 0.9687,
"strikeout": 1.0086
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "675660",
"profile": {
"available": true,
"pitcher_id": "675660",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 500.0,
"k_percent": 23.7,
"bb_percent": 8.2,
"woba": 0.325,
"xwoba": 0.302,
"sweet_spot_percent": 36.0,
"barrel_batted_rate": 8.8,
"hard_hit_percent": 38.3,
"avg_best_speed": 77.5588,
"avg_hyper_speed": 93.9255,
"whiff_percent": 27.6,
"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.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.0301,
"command_and_miss": 0.2793,
"regression_edge": 0.6571,
"xwoba_edge": 0.2571,
"barrel_edge": -0.3556,
"hard_hit_edge": -0.0571,
"whiff_edge": 0.3571,
"bb_edge": 0.225,
"pitch_design_score": 0.0323
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "675660",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 66,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 66,
"pitch_usage": 0.0,
"release_speed": 90.44122148478533,
"release_spin_rate": 2572.257864118206,
"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": 66,
"pitch_usage": 0.0,
"release_speed": 90.44122148478533,
"release_spin_rate": 2572.257864118206,
"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.4412,
"release_spin_rate": 2572.2579,
"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.0323,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.231,
"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.1241,
"sample_weight": 1.0,
"run_prevention_factor": 0.9895,
"strikeout_factor": 1.024,
"walk_factor": 0.982,
"homer_factor": 1.023,
"woba_minus_xwoba": 0.023,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "675660",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9895,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9895,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.982,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.023,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.024,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 3,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 2,
"predicted_SO": 3,
"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 -6 outs from the projected workload."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_MIL@PHI | home | Andrew Painter | Andrew Painter | True | 5.0 | 6.0 | 3 | 5 | 1 | -4 | 7/5 | 2/3 | 3/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 5.593922651933702,
"WHIP": 1.4171270718232043,
"IP": 120.2,
"games_started": null,
"games_pitched": 24,
"role_avg_IP": 5.03,
"recent_avg_IP": 5.667,
"last_start_IP": 5.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.0821,
"sample_weight": 1.0,
"run_prevention_factor": 1.007,
"strikeout_factor": 0.9909,
"walk_factor": 0.984,
"homer_factor": 1.0178,
"regression_flag": "neutral",
"k_percent": 20.3,
"bb_percent": 8.3,
"woba": 0.341,
"xwoba": 0.325,
"barrel_percent": 8.3,
"hard_hit_percent": 35.5,
"whiff_percent": 25.2
},
"espn_rank": {
"rank": 212,
"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": "691725",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 24,
"reference_playing_time": 5.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.1,
"ER": 13.0,
"R": 13.0,
"H": 24.0,
"BB": 10.0,
"SO": 28.0,
"HR": 4.0,
"BF": 118.0,
"Pitches": 457.0
},
"per_game": {
"IP": 5.2,
"ER": 2.6,
"R": 2.6,
"H": 4.8,
"BB": 2.0,
"SO": 5.6,
"HR": 0.8,
"BF": 23.6,
"Pitches": 91.4
},
"rates": {
"ERA": 4.1294,
"WHIP": 1.2,
"ER_per_IP": 0.45882,
"H_per_IP": 0.84706,
"BB_per_IP": 0.35294,
"SO_per_IP": 0.98824,
"HR_per_IP": 0.14118
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.2,
"ER": 24.0,
"R": 24.0,
"H": 43.0,
"BB": 20.0,
"SO": 54.0,
"HR": 7.0,
"BF": 229.0,
"Pitches": 892.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.4,
"H": 4.3,
"BB": 2.0,
"SO": 5.4,
"HR": 0.7,
"BF": 22.9,
"Pitches": 89.2
},
"rates": {
"ERA": 3.8802,
"WHIP": 1.1317,
"ER_per_IP": 0.43114,
"H_per_IP": 0.77246,
"BB_per_IP": 0.35928,
"SO_per_IP": 0.97006,
"HR_per_IP": 0.12575
}
},
"season": {
"games": 24,
"totals": {
"IP": 120.2,
"ER": 75.0,
"R": 75.0,
"H": 127.0,
"BB": 44.0,
"SO": 107.0,
"HR": 21.0,
"BF": 528.0,
"Pitches": 2033.0
},
"per_game": {
"IP": 5.0,
"ER": 3.125,
"R": 3.125,
"H": 5.2917,
"BB": 1.8333,
"SO": 4.4583,
"HR": 0.875,
"BF": 22.0,
"Pitches": 84.7083
},
"rates": {
"ERA": 5.5939,
"WHIP": 1.4171,
"ER_per_IP": 0.62155,
"H_per_IP": 1.05249,
"BB_per_IP": 0.36464,
"SO_per_IP": 0.88674,
"HR_per_IP": 0.17403
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.1,
"predicted_ER": 2.676,
"predicted_H": 4.854,
"predicted_BB": 1.983,
"predicted_SO": 5.264,
"predicted_HR": 0.788,
"predicted_ERA": 4.38,
"predicted_WHIP": 1.2435
}
},
"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.1,
"form": 5.1,
"final": 5.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 5.0,
"form": 2.676,
"final": 3.6587,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 4.854,
"final": 5.7614,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.983,
"final": 1.9902,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 3.0,
"form": 5.264,
"final": 4.3067,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.788,
"final": 0.4548,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.38,
"final": 4.38,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2435,
"final": 1.2435,
"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.2,
"ER": 24,
"H": 43,
"BB": 20,
"SO": 54,
"HR": 7,
"ERA": 3.8802395209580838,
"WHIP": 1.131736526946108,
"K9": 8.73053892215569,
"HR9": 1.131736526946108,
"games_pitched": 10,
"quality_starts": 4,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.9276980285226911,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.333333333333333,
"predicted_ER": 5.0,
"predicted_H": 7.0,
"predicted_BB": 2.0,
"predicted_SO": 3.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 24.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8276,
"prior_weight": 0.1724
}
},
{
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 5,
"predicted_H": 7,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "691725",
"player_name": "Andrew Painter",
"position": "Starter",
"team": "PHI",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.3333,
"predicted_SO": 3.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "starter_usage_guardrail",
"description": "Starter workload capped by recent innings, season ERA/WHIP, and team-form context.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 5.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 5.0,
"predicted_SO": 3.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 0,
"deboosted_metrics": 1,
"better_metrics": 0,
"worse_metrics": 1,
"biggest_boost": null,
"biggest_deboost": {
"metric": "predicted_IP",
"before": 5.3333,
"after": 5.0,
"delta": -0.3333,
"percent_delta": -0.0625,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
"has_material_change": true,
"dominant_effect": "worse"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "PHI",
"games": 158,
"wins": 87,
"losses": 71,
"win_pct": 0.5506,
"runs_scored": 704.0,
"runs_allowed": 676.0,
"run_differential": 28.0,
"run_differential_per_game": 0.1772,
"avg_runs_scored": 4.4557,
"avg_runs_allowed": 4.2785,
"offense_index": 0.9934,
"defense_index": 1.0483,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 5,
"losses": 5,
"win_pct": 0.5,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 4.8,
"run_differential": -8.0
},
"available": true,
"quality_score": 0.0647
},
"opponent": {
"team": "MIL",
"games": 158,
"wins": 99,
"losses": 59,
"win_pct": 0.6266,
"runs_scored": 810.0,
"runs_allowed": 607.0,
"run_differential": 203.0,
"run_differential_per_game": 1.2848,
"avg_runs_scored": 5.1266,
"avg_runs_allowed": 3.8418,
"offense_index": 1.143,
"defense_index": 1.1675,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.8,
"avg_runs_allowed": 3.7,
"run_differential": 11.0
},
"available": true,
"quality_score": 0.3352
},
"edges": {
"quality_edge": -0.2705,
"offense_edge": -0.0066,
"opponent_offense_edge": 0.143,
"defense_strength": 0.0483,
"opponent_defense_weakness": -0.1675,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9849,
"run_prevention": 1.0316,
"strikeout": 0.9804
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "691725",
"profile": {
"available": true,
"pitcher_id": "691725",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 503.0,
"k_percent": 20.3,
"bb_percent": 8.3,
"woba": 0.341,
"xwoba": 0.325,
"sweet_spot_percent": 29.6,
"barrel_batted_rate": 8.3,
"hard_hit_percent": 35.5,
"avg_best_speed": 76.1311,
"avg_hyper_speed": 93.668,
"whiff_percent": 25.2,
"swing_percent": 49.4
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.202,
"command_and_miss": -0.0643,
"regression_edge": 0.4571,
"xwoba_edge": -0.4,
"barrel_edge": -0.2444,
"hard_hit_edge": 0.3429,
"whiff_edge": 0.0143,
"bb_edge": 0.2,
"pitch_design_score": 0.0245
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "691725",
"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.30079839615475,
"release_spin_rate": 2307.356647519465,
"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.30079839615475,
"release_spin_rate": 2307.356647519465,
"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.3008,
"release_spin_rate": 2307.3566,
"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.0245,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.1748,
"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.0821,
"sample_weight": 1.0,
"run_prevention_factor": 1.007,
"strikeout_factor": 0.9909,
"walk_factor": 0.984,
"homer_factor": 1.0178,
"woba_minus_xwoba": 0.016,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "691725",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 1.007,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 1.007,
"adjusted": 5
},
"predicted_BB": {
"original": 2.0,
"factor": 0.984,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0178,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 0.9909,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 7,
"predicted_R": 5,
"predicted_ER": 5,
"predicted_BB": 2,
"predicted_SO": 3,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 92,
"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": "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/20260924_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"
}
} |
| 20260924 | 20260924_NYM@TEX | away | Zac Thornton | Zac Thornton | True | 5.2 | 5.0 | -2 | 2 | 2 | 0 | 5/4 | 0/1 | 2/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.4033613445378155,
"WHIP": 1.147058823529412,
"IP": 79.1,
"games_started": null,
"games_pitched": 14,
"role_avg_IP": 5.667,
"recent_avg_IP": 5.8,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.3499,
"sample_weight": 1.0,
"run_prevention_factor": 1.0297,
"strikeout_factor": 0.9429,
"walk_factor": 0.924,
"homer_factor": 1.0781,
"regression_flag": "neutral",
"k_percent": 18.6,
"bb_percent": 5.3,
"woba": 0.313,
"xwoba": 0.329,
"barrel_percent": 9.6,
"hard_hit_percent": 41.4,
"whiff_percent": 18.5
},
"espn_rank": {
"rank": 115,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "804267",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 14,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.0,
"ER": 13.0,
"R": 13.0,
"H": 30.0,
"BB": 3.0,
"SO": 23.0,
"HR": 7.0,
"BF": 118.0,
"Pitches": 436.0
},
"per_game": {
"IP": 5.2,
"ER": 2.6,
"R": 2.6,
"H": 6.0,
"BB": 0.6,
"SO": 4.6,
"HR": 1.4,
"BF": 23.6,
"Pitches": 87.2
},
"rates": {
"ERA": 4.0345,
"WHIP": 1.1379,
"ER_per_IP": 0.44828,
"H_per_IP": 1.03448,
"BB_per_IP": 0.10345,
"SO_per_IP": 0.7931,
"HR_per_IP": 0.24138
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 56.0,
"ER": 25.0,
"R": 26.0,
"H": 60.0,
"BB": 11.0,
"SO": 42.0,
"HR": 12.0,
"BF": 231.0,
"Pitches": 853.0
},
"per_game": {
"IP": 5.2,
"ER": 2.5,
"R": 2.6,
"H": 6.0,
"BB": 1.1,
"SO": 4.2,
"HR": 1.2,
"BF": 23.1,
"Pitches": 85.3
},
"rates": {
"ERA": 4.0179,
"WHIP": 1.2679,
"ER_per_IP": 0.44643,
"H_per_IP": 1.07143,
"BB_per_IP": 0.19643,
"SO_per_IP": 0.75,
"HR_per_IP": 0.21429
}
},
"season": {
"games": 14,
"totals": {
"IP": 79.1,
"ER": 30.0,
"R": 31.0,
"H": 74.0,
"BB": 17.0,
"SO": 59.0,
"HR": 13.0,
"BF": 318.0,
"Pitches": 1174.0
},
"per_game": {
"IP": 5.2,
"ER": 2.1429,
"R": 2.2143,
"H": 5.2857,
"BB": 1.2143,
"SO": 4.2143,
"HR": 0.9286,
"BF": 22.7143,
"Pitches": 83.8571
},
"rates": {
"ERA": 3.4034,
"WHIP": 1.1471,
"ER_per_IP": 0.37815,
"H_per_IP": 0.93277,
"BB_per_IP": 0.21429,
"SO_per_IP": 0.7437,
"HR_per_IP": 0.16387
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.572,
"predicted_H": 5.754,
"predicted_BB": 1.221,
"predicted_SO": 4.605,
"predicted_HR": 1.125,
"predicted_ERA": 4.0849,
"predicted_WHIP": 1.2308
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4612,
"form_weight": 0.5388,
"form_reliability": 0.7368,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.572,
"final": 2.3082,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 5.754,
"final": 5.4063,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 0.0,
"form": 1.221,
"final": 0.6579,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 2.0,
"form": 4.605,
"final": 3.4036,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.125,
"final": 0.6061,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.0849,
"final": 4.0849,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2308,
"final": 1.2308,
"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": 25,
"H": 60,
"BB": 11,
"SO": 42,
"HR": 12,
"ERA": 4.017857142857143,
"WHIP": 1.2678571428571428,
"K9": 6.75,
"HR9": 1.9285714285714286,
"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-09-18T00:00:00"
},
"recent_form_boost": 0.9465830263841112,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.666666666666667,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_BB": 0.0,
"predicted_SO": 2.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 14.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.7368,
"prior_weight": 0.2632
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "804267",
"player_name": "Zac Thornton",
"position": "Starter",
"team": "NYM",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.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": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 0.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 2.0,
"predicted_SO": 2.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
}
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.6667,
"after": 5.2,
"delta": -0.4667,
"percent_delta": -0.0824,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 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": 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": "NYM",
"games": 158,
"wins": 73,
"losses": 85,
"win_pct": 0.462,
"runs_scored": 681.0,
"runs_allowed": 714.0,
"run_differential": -33.0,
"run_differential_per_game": -0.2089,
"avg_runs_scored": 4.3101,
"avg_runs_allowed": 4.519,
"offense_index": 0.9607,
"defense_index": 0.9928,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 3.9,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.0929
},
"opponent": {
"team": "TEX",
"games": 158,
"wins": 78,
"losses": 80,
"win_pct": 0.4937,
"runs_scored": 658.0,
"runs_allowed": 700.0,
"run_differential": -42.0,
"run_differential_per_game": -0.2658,
"avg_runs_scored": 4.1646,
"avg_runs_allowed": 4.4304,
"offense_index": 0.9282,
"defense_index": 1.0127,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.0,
"run_differential": 7.0
},
"available": true,
"quality_score": -0.0029
},
"edges": {
"quality_edge": -0.09,
"offense_edge": -0.0393,
"opponent_offense_edge": -0.0718,
"defense_strength": -0.0072,
"opponent_defense_weakness": -0.0127,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9991,
"run_prevention": 0.9937,
"strikeout": 1.003
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "804267",
"profile": {
"available": true,
"pitcher_id": "804267",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 273.0,
"k_percent": 18.6,
"bb_percent": 5.3,
"woba": 0.313,
"xwoba": 0.329,
"sweet_spot_percent": 36.4,
"barrel_batted_rate": 9.6,
"hard_hit_percent": 41.4,
"avg_best_speed": 77.7421,
"avg_hyper_speed": 94.353,
"whiff_percent": 18.5,
"swing_percent": 52.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.3581,
"command_and_miss": -0.3586,
"regression_edge": -0.4571,
"xwoba_edge": -0.5143,
"barrel_edge": -0.5333,
"hard_hit_edge": -0.5,
"whiff_edge": -0.9429,
"bb_edge": 0.95,
"pitch_design_score": -0.1301
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "804267",
"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": 87.54106140532146,
"release_spin_rate": 2356.5118793991364,
"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": 87.54106140532146,
"release_spin_rate": 2356.5118793991364,
"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.5411,
"release_spin_rate": 2356.5119,
"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.1301,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.929,
"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.3499,
"sample_weight": 1.0,
"run_prevention_factor": 1.0297,
"strikeout_factor": 0.9429,
"walk_factor": 0.924,
"homer_factor": 1.0781,
"woba_minus_xwoba": -0.016,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "804267",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0297,
"adjusted": 2
},
"predicted_H": {
"original": 6.0,
"factor": 1.0297,
"adjusted": 6
},
"predicted_BB": {
"original": 1.0,
"factor": 0.924,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0781,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9429,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 0,
"predicted_SO": 2,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 22,
"Pitches": 86,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was +0."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_NYM@TEX | home | Kumar Rocker | Kumar Rocker | True | 4.2 | 5.0 | 1 | 4 | 1 | -3 | 3/3 | 5/2 | 4/4 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.468531468531468,
"WHIP": 1.4195804195804196,
"IP": 143.0,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 4.821,
"recent_avg_IP": 4.4,
"last_start_IP": 4.1,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.1658,
"sample_weight": 1.0,
"run_prevention_factor": 1.0141,
"strikeout_factor": 1.0011,
"walk_factor": 1.006,
"homer_factor": 1.0366,
"regression_flag": "neutral",
"k_percent": 21.4,
"bb_percent": 9.4,
"woba": 0.333,
"xwoba": 0.328,
"barrel_percent": 7.7,
"hard_hit_percent": 40.2,
"whiff_percent": 25.9
},
"espn_rank": {
"rank": 207,
"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": "677958",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 4.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.0,
"ER": 11.0,
"R": 12.0,
"H": 23.0,
"BB": 11.0,
"SO": 25.0,
"HR": 3.0,
"BF": 99.0,
"Pitches": 393.0
},
"per_game": {
"IP": 4.1,
"ER": 2.2,
"R": 2.4,
"H": 4.6,
"BB": 2.2,
"SO": 5.0,
"HR": 0.6,
"BF": 19.8,
"Pitches": 78.6
},
"rates": {
"ERA": 4.5,
"WHIP": 1.5455,
"ER_per_IP": 0.5,
"H_per_IP": 1.04545,
"BB_per_IP": 0.5,
"SO_per_IP": 1.13636,
"HR_per_IP": 0.13636
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 47.0,
"ER": 27.0,
"R": 28.0,
"H": 54.0,
"BB": 23.0,
"SO": 48.0,
"HR": 8.0,
"BF": 216.0,
"Pitches": 824.0
},
"per_game": {
"IP": 4.2,
"ER": 2.7,
"R": 2.8,
"H": 5.4,
"BB": 2.3,
"SO": 4.8,
"HR": 0.8,
"BF": 21.6,
"Pitches": 82.4
},
"rates": {
"ERA": 5.1702,
"WHIP": 1.6383,
"ER_per_IP": 0.57447,
"H_per_IP": 1.14894,
"BB_per_IP": 0.48936,
"SO_per_IP": 1.02128,
"HR_per_IP": 0.17021
}
},
"season": {
"games": 29,
"totals": {
"IP": 143.0,
"ER": 71.0,
"R": 73.0,
"H": 144.0,
"BB": 59.0,
"SO": 134.0,
"HR": 20.0,
"BF": 627.0,
"Pitches": 2422.0
},
"per_game": {
"IP": 5.0,
"ER": 2.4483,
"R": 2.5172,
"H": 4.9655,
"BB": 2.0345,
"SO": 4.6207,
"HR": 0.6897,
"BF": 21.6207,
"Pitches": 83.5172
},
"rates": {
"ERA": 4.4685,
"WHIP": 1.4196,
"ER_per_IP": 0.4965,
"H_per_IP": 1.00699,
"BB_per_IP": 0.41259,
"SO_per_IP": 0.93706,
"HR_per_IP": 0.13986
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 2.404,
"predicted_H": 4.874,
"predicted_BB": 2.131,
"predicted_SO": 4.774,
"predicted_HR": 0.684,
"predicted_ERA": 4.7087,
"predicted_WHIP": 1.5242
}
},
"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.2,
"final": 4.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.404,
"final": 3.0618,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 4.874,
"final": 4.1016,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 5.0,
"form": 2.131,
"final": 3.3135,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.774,
"final": 4.455,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.684,
"final": 0.8142,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.7087,
"final": 4.7087,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.5242,
"final": 1.5242,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 47.0,
"ER": 27,
"H": 54,
"BB": 23,
"SO": 48,
"HR": 8,
"ERA": 5.170212765957447,
"WHIP": 1.6382978723404256,
"K9": 9.191489361702128,
"HR9": 1.5319148936170213,
"games_pitched": 10,
"quality_starts": 1,
"dominant_form": false,
"struggling_form": true
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 1.0854840522199773,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 4.666666666666667,
"predicted_ER": 4.0,
"predicted_H": 3.0,
"predicted_BB": 5.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "677958",
"player_name": "Kumar Rocker",
"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": 5.0,
"predicted_ER": 4.0,
"predicted_H": 3.0,
"predicted_HR": 1.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": 5.0,
"predicted_ER": 4.0,
"predicted_H": 3.0,
"predicted_HR": 1.0,
"predicted_IP": 4.2,
"predicted_R": 4.0,
"predicted_SO": 4.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.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": 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": 5.0,
"after": 5.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": 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": 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": "TEX",
"games": 158,
"wins": 78,
"losses": 80,
"win_pct": 0.4937,
"runs_scored": 658.0,
"runs_allowed": 700.0,
"run_differential": -42.0,
"run_differential_per_game": -0.2658,
"avg_runs_scored": 4.1646,
"avg_runs_allowed": 4.4304,
"offense_index": 0.9282,
"defense_index": 1.0127,
"current_streak": "L3",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 4.0,
"run_differential": 7.0
},
"available": true,
"quality_score": -0.0029
},
"opponent": {
"team": "NYM",
"games": 158,
"wins": 73,
"losses": 85,
"win_pct": 0.462,
"runs_scored": 681.0,
"runs_allowed": 714.0,
"run_differential": -33.0,
"run_differential_per_game": -0.2089,
"avg_runs_scored": 4.3101,
"avg_runs_allowed": 4.519,
"offense_index": 0.9607,
"defense_index": 0.9928,
"current_streak": "W2",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.8,
"avg_runs_allowed": 3.9,
"run_differential": -1.0
},
"available": true,
"quality_score": -0.0929
},
"edges": {
"quality_edge": 0.09,
"offense_edge": -0.0718,
"opponent_offense_edge": -0.0393,
"defense_strength": 0.0127,
"opponent_defense_weakness": 0.0072,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0056,
"run_prevention": 0.9879,
"strikeout": 1.0058
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "677958",
"profile": {
"available": true,
"pitcher_id": "677958",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 608.0,
"k_percent": 21.4,
"bb_percent": 9.4,
"woba": 0.333,
"xwoba": 0.328,
"sweet_spot_percent": 32.3,
"barrel_batted_rate": 7.7,
"hard_hit_percent": 40.2,
"avg_best_speed": 78.0305,
"avg_hyper_speed": 94.4045,
"whiff_percent": 25.9,
"swing_percent": 47.9
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.3103,
"command_and_miss": -0.0136,
"regression_edge": 0.1429,
"xwoba_edge": -0.4857,
"barrel_edge": -0.1111,
"hard_hit_edge": -0.3286,
"whiff_edge": 0.1143,
"bb_edge": -0.075,
"pitch_design_score": -0.0348
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "677958",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 82,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 82,
"pitch_usage": 0.0,
"release_speed": 89.2417427175566,
"release_spin_rate": 2139.55819234905,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 82,
"pitch_usage": 0.0,
"release_speed": 89.2417427175566,
"release_spin_rate": 2139.55819234905,
"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.2417,
"release_spin_rate": 2139.5582,
"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.0348,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2488,
"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.1658,
"sample_weight": 1.0,
"run_prevention_factor": 1.0141,
"strikeout_factor": 1.0011,
"walk_factor": 1.006,
"homer_factor": 1.0366,
"woba_minus_xwoba": 0.005,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "677958",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.0141,
"adjusted": 2
},
"predicted_H": {
"original": 4.0,
"factor": 1.0141,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 1.006,
"adjusted": 2
},
"predicted_HR": {
"original": 1.0,
"factor": 1.0366,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0011,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 4.2,
"predicted_H": 3,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 5,
"predicted_SO": 4,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 22,
"Pitches": 88,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -3."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_SD@LAD | away | Nick Pivetta | Nick Pivetta | True | 5.0 | 4.2 | -1 | 2 | 0 | -2 | 5/4 | 3/1 | 6/7 | Last 10 before this game (7 available){
"model_context": {
"embedded_season": {
"ERA": 3.3,
"WHIP": 1.0,
"IP": 30.0,
"games_started": null,
"games_pitched": 7,
"role_avg_IP": 4.286,
"recent_avg_IP": 4.4,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.209,
"sample_weight": 0.45,
"run_prevention_factor": 0.9822,
"strikeout_factor": 1.0067,
"walk_factor": 0.9703,
"homer_factor": 0.9915,
"regression_flag": "neutral",
"k_percent": 29.2,
"bb_percent": 5.8,
"woba": 0.246,
"xwoba": 0.265,
"barrel_percent": 9.0,
"hard_hit_percent": 35.9,
"whiff_percent": 20.5
},
"espn_rank": {
"rank": 232,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 30.0,
"season_ERA": 3.3,
"season_WHIP": 1.0,
"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.7627118644067797,
"last_10": 0.23728813559322032
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "601713",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 7,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 22.0,
"ER": 5.0,
"R": 5.0,
"H": 15.0,
"BB": 2.0,
"SO": 23.0,
"HR": 2.0,
"BF": 83.0,
"Pitches": 340.0
},
"per_game": {
"IP": 4.1,
"ER": 1.0,
"R": 1.0,
"H": 3.0,
"BB": 0.4,
"SO": 4.6,
"HR": 0.4,
"BF": 16.6,
"Pitches": 68.0
},
"rates": {
"ERA": 2.0455,
"WHIP": 0.7727,
"ER_per_IP": 0.22727,
"H_per_IP": 0.68182,
"BB_per_IP": 0.09091,
"SO_per_IP": 1.04545,
"HR_per_IP": 0.09091
}
},
"last_10": {
"games": 7,
"totals": {
"IP": 30.0,
"ER": 11.0,
"R": 11.0,
"H": 23.0,
"BB": 7.0,
"SO": 35.0,
"HR": 2.0,
"BF": 120.0,
"Pitches": 491.0
},
"per_game": {
"IP": 4.1,
"ER": 1.5714,
"R": 1.5714,
"H": 3.2857,
"BB": 1.0,
"SO": 5.0,
"HR": 0.2857,
"BF": 17.1429,
"Pitches": 70.1429
},
"rates": {
"ERA": 3.3,
"WHIP": 1.0,
"ER_per_IP": 0.36667,
"H_per_IP": 0.76667,
"BB_per_IP": 0.23333,
"SO_per_IP": 1.16667,
"HR_per_IP": 0.06667
}
},
"season": {
"games": 7,
"totals": {
"IP": 30.0,
"ER": 11.0,
"R": 11.0,
"H": 23.0,
"BB": 7.0,
"SO": 35.0,
"HR": 2.0,
"BF": 120.0,
"Pitches": 491.0
},
"per_game": {
"IP": 4.1,
"ER": 1.5714,
"R": 1.5714,
"H": 3.2857,
"BB": 1.0,
"SO": 5.0,
"HR": 0.2857,
"BF": 17.1429,
"Pitches": 70.1429
},
"rates": {
"ERA": 3.3,
"WHIP": 1.0,
"ER_per_IP": 0.36667,
"H_per_IP": 0.76667,
"BB_per_IP": 0.23333,
"SO_per_IP": 1.16667,
"HR_per_IP": 0.06667
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.2,
"predicted_ER": 1.681,
"predicted_H": 3.776,
"predicted_BB": 1.058,
"predicted_SO": 4.69,
"predicted_HR": 0.514,
"predicted_ERA": 3.2817,
"predicted_WHIP": 1.0482
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.5261,
"form_weight": 0.4739,
"form_reliability": 0.5833,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.2,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.681,
"final": 1.8488,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 3.776,
"final": 4.4199,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 3.0,
"form": 1.058,
"final": 2.0796,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 4.69,
"final": 4.327,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 1.0,
"form": 0.514,
"final": 0.7697,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 3.2817,
"final": 3.2817,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.0482,
"final": 1.0482,
"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": 30.0,
"ER": 11,
"H": 23,
"BB": 7,
"SO": 35,
"HR": 2,
"ERA": 3.3,
"WHIP": 1.0,
"K9": 10.5,
"HR9": 0.6,
"games_pitched": 7,
"quality_starts": 0,
"dominant_form": false,
"struggling_form": false
},
"fielding": {
"errors": 0,
"assists": 0,
"games_fielded": 7,
"error_prone": false
},
"games_count": 7,
"latest_game_date": "2026-09-18T00:00:00"
},
"recent_form_boost": 0.8599002863600387,
"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": 5.0,
"predicted_BB": 3.0,
"predicted_SO": 4.0,
"predicted_HR": 1.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 7.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.5833,
"prior_weight": 0.4167
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 2,
"predicted_H": 5,
"predicted_BB": 3,
"predicted_SO": 5,
"predicted_HR": 1
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "601713",
"player_name": "Nick Pivetta",
"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": 3.0,
"predicted_ER": 2.0,
"predicted_H": 5.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": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 5.0,
"delta": 1.0,
"percent_delta": 0.25,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 3.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 1.0,
"predicted_IP": 5.0,
"predicted_R": 2.0,
"predicted_SO": 6.0
},
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 6.0,
"delta": 2.0,
"percent_delta": 0.5,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "SD",
"games": 158,
"wins": 88,
"losses": 70,
"win_pct": 0.557,
"runs_scored": 695.0,
"runs_allowed": 657.0,
"run_differential": 38.0,
"run_differential_per_game": 0.2405,
"avg_runs_scored": 4.3987,
"avg_runs_allowed": 4.1582,
"offense_index": 0.9804,
"defense_index": 1.0789,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.2,
"avg_runs_allowed": 4.4,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.1829
},
"opponent": {
"team": "LAD",
"games": 158,
"wins": 97,
"losses": 61,
"win_pct": 0.6139,
"runs_scored": 788.0,
"runs_allowed": 592.0,
"run_differential": 196.0,
"run_differential_per_game": 1.2405,
"avg_runs_scored": 4.9873,
"avg_runs_allowed": 3.7468,
"offense_index": 1.1116,
"defense_index": 1.1974,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.1,
"avg_runs_allowed": 2.7,
"run_differential": 24.0
},
"available": true,
"quality_score": 0.3189
},
"edges": {
"quality_edge": -0.136,
"offense_edge": -0.0196,
"opponent_offense_edge": 0.1116,
"defense_strength": 0.0789,
"opponent_defense_weakness": -0.1974,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 0.9925,
"run_prevention": 1.0168,
"strikeout": 0.987
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "601713",
"profile": {
"available": true,
"pitcher_id": "601713",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 100.0,
"k_percent": 29.2,
"bb_percent": 5.8,
"woba": 0.246,
"xwoba": 0.265,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 9.0,
"hard_hit_percent": 35.9,
"avg_best_speed": 79.7105,
"avg_hyper_speed": 93.5986,
"whiff_percent": 20.5,
"swing_percent": 47.7
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.7466,
"command_and_miss": 0.3979,
"regression_edge": -0.5429,
"xwoba_edge": 1.3143,
"barrel_edge": -0.4,
"hard_hit_edge": 0.2857,
"whiff_edge": -0.6571,
"bb_edge": 0.825,
"pitch_design_score": -0.0365
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "601713",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 69,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 69,
"pitch_usage": 0.0,
"release_speed": 89.21211734682227,
"release_spin_rate": 2437.193161283574,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 69,
"pitch_usage": 0.0,
"release_speed": 89.21211734682227,
"release_spin_rate": 2437.193161283574,
"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.2121,
"release_spin_rate": 2437.1932,
"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.0365,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.2606,
"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.209,
"sample_weight": 0.45,
"run_prevention_factor": 0.9822,
"strikeout_factor": 1.0067,
"walk_factor": 0.9703,
"homer_factor": 0.9915,
"woba_minus_xwoba": -0.019,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "601713",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.992,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 0.992,
"adjusted": 3
},
"predicted_BB": {
"original": 1.0,
"factor": 0.9866,
"adjusted": 1
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9962,
"adjusted": 0
},
"predicted_SO": {
"original": 5.0,
"factor": 1.003,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 3,
"predicted_SO": 6,
"predicted_HR": 1,
"box_score_synced": true,
"BF": 23,
"Pitches": 102,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "PARTIAL_PRIOR_HISTORY",
"severity": "warning",
"title": "Only 7 prior appearances available",
"detail": "The requested last-10 window is incomplete, so recent-form averages have a smaller and less stable sample."
},
{
"code": "MATERIAL_ER_MISS",
"severity": "warning",
"title": "Earned-run miss of 2",
"detail": "Actual minus predicted earned runs was -2."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_SD@LAD | home | Tyler Glasnow | Tyler Glasnow | True | 6.0 | 6.1 | 1 | 2 | 3 | 1 | 5/3 | 2/2 | 7/11 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.4581280788177335,
"WHIP": 0.960591133004926,
"IP": 67.2,
"games_started": null,
"games_pitched": 12,
"role_avg_IP": 5.639,
"recent_avg_IP": 5.6,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.5745,
"sample_weight": 0.96,
"run_prevention_factor": 0.9512,
"strikeout_factor": 1.0938,
"walk_factor": 0.9923,
"homer_factor": 0.9923,
"regression_flag": "neutral",
"k_percent": 33.0,
"bb_percent": 8.7,
"woba": 0.251,
"xwoba": 0.266,
"barrel_percent": 8.5,
"hard_hit_percent": 39.2,
"whiff_percent": 31.2
},
"espn_rank": {
"rank": 119,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 6.0,
"season_IP": 67.2,
"season_ERA": 3.458,
"season_WHIP": 0.961,
"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": 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": "607192",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 12,
"reference_playing_time": 6.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 28.0,
"ER": 14.0,
"R": 14.0,
"H": 22.0,
"BB": 10.0,
"SO": 38.0,
"HR": 2.0,
"BF": 116.0,
"Pitches": 459.0
},
"per_game": {
"IP": 5.2,
"ER": 2.8,
"R": 2.8,
"H": 4.4,
"BB": 2.0,
"SO": 7.6,
"HR": 0.4,
"BF": 23.2,
"Pitches": 91.8
},
"rates": {
"ERA": 4.5,
"WHIP": 1.1429,
"ER_per_IP": 0.5,
"H_per_IP": 0.78571,
"BB_per_IP": 0.35714,
"SO_per_IP": 1.35714,
"HR_per_IP": 0.07143
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 55.2,
"ER": 22.0,
"R": 22.0,
"H": 34.0,
"BB": 20.0,
"SO": 72.0,
"HR": 7.0,
"BF": 217.0,
"Pitches": 867.0
},
"per_game": {
"IP": 5.2,
"ER": 2.2,
"R": 2.2,
"H": 3.4,
"BB": 2.0,
"SO": 7.2,
"HR": 0.7,
"BF": 21.7,
"Pitches": 86.7
},
"rates": {
"ERA": 3.5569,
"WHIP": 0.9701,
"ER_per_IP": 0.39521,
"H_per_IP": 0.61078,
"BB_per_IP": 0.35928,
"SO_per_IP": 1.29341,
"HR_per_IP": 0.12575
}
},
"season": {
"games": 12,
"totals": {
"IP": 67.2,
"ER": 26.0,
"R": 26.0,
"H": 42.0,
"BB": 23.0,
"SO": 87.0,
"HR": 7.0,
"BF": 264.0,
"Pitches": 1058.0
},
"per_game": {
"IP": 5.2,
"ER": 2.1667,
"R": 2.1667,
"H": 3.5,
"BB": 1.9167,
"SO": 7.25,
"HR": 0.5833,
"BF": 22.0,
"Pitches": 88.1667
},
"rates": {
"ERA": 3.4581,
"WHIP": 0.9606,
"ER_per_IP": 0.38424,
"H_per_IP": 0.62069,
"BB_per_IP": 0.3399,
"SO_per_IP": 1.28571,
"HR_per_IP": 0.10345
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.657,
"predicted_H": 4.48,
"predicted_BB": 2.08,
"predicted_SO": 6.963,
"predicted_HR": 0.645,
"predicted_ERA": 4.148,
"predicted_WHIP": 1.1378
}
},
"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": 6.0,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.657,
"final": 2.3454,
"source": "model_form_blend"
},
"predicted_H": {
"model": 5.0,
"form": 4.48,
"final": 4.7266,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.08,
"final": 2.0421,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 6.963,
"final": 5.5578,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.645,
"final": 0.3391,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.148,
"final": 4.148,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1378,
"final": 1.1378,
"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.2,
"ER": 22,
"H": 34,
"BB": 20,
"SO": 72,
"HR": 7,
"ERA": 3.55688622754491,
"WHIP": 0.9700598802395208,
"K9": 11.64071856287425,
"HR9": 1.1317365269461077,
"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.8872788668460444,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_BB": 2.0,
"predicted_SO": 4.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
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.0,
"predicted_ER": 2,
"predicted_H": 5,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "607192",
"player_name": "Tyler Glasnow",
"position": "Starter",
"team": "LAD",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.0,
"predicted_SO": 4.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.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": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 7.0,
"delta": 3.0,
"percent_delta": 0.75,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 7.0,
"delta": 3.0,
"percent_delta": 0.75,
"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": 2.0,
"predicted_H": 5.0,
"predicted_HR": 0.0,
"predicted_IP": 6.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": 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": 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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.0,
"after": 6.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 7.0,
"delta": 3.0,
"percent_delta": 0.75,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 4.0,
"after": 7.0,
"delta": 3.0,
"percent_delta": 0.75,
"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": "LAD",
"games": 158,
"wins": 97,
"losses": 61,
"win_pct": 0.6139,
"runs_scored": 788.0,
"runs_allowed": 592.0,
"run_differential": 196.0,
"run_differential_per_game": 1.2405,
"avg_runs_scored": 4.9873,
"avg_runs_allowed": 3.7468,
"offense_index": 1.1116,
"defense_index": 1.1974,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 5.1,
"avg_runs_allowed": 2.7,
"run_differential": 24.0
},
"available": true,
"quality_score": 0.3189
},
"opponent": {
"team": "SD",
"games": 158,
"wins": 88,
"losses": 70,
"win_pct": 0.557,
"runs_scored": 695.0,
"runs_allowed": 657.0,
"run_differential": 38.0,
"run_differential_per_game": 0.2405,
"avg_runs_scored": 4.3987,
"avg_runs_allowed": 4.1582,
"offense_index": 0.9804,
"defense_index": 1.0789,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 8,
"losses": 2,
"win_pct": 0.8,
"avg_runs_scored": 6.2,
"avg_runs_allowed": 4.4,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.1829
},
"edges": {
"quality_edge": 0.136,
"offense_edge": 0.1116,
"opponent_offense_edge": -0.0196,
"defense_strength": 0.1974,
"opponent_defense_weakness": -0.0789,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0121,
"run_prevention": 0.9703,
"strikeout": 1.0056
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "607192",
"profile": {
"available": true,
"pitcher_id": "607192",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 240.0,
"k_percent": 33.0,
"bb_percent": 8.7,
"woba": 0.251,
"xwoba": 0.266,
"sweet_spot_percent": 32.7,
"barrel_batted_rate": 8.5,
"hard_hit_percent": 39.2,
"avg_best_speed": 81.2861,
"avg_hyper_speed": 93.9525,
"whiff_percent": 31.2,
"swing_percent": 42.4
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.658,
"command_and_miss": 1.0321,
"regression_edge": -0.4286,
"xwoba_edge": 1.2857,
"barrel_edge": -0.2889,
"hard_hit_edge": -0.1857,
"whiff_edge": 0.8714,
"bb_edge": 0.1,
"pitch_design_score": 0.0557
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "607192",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 76,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 76,
"pitch_usage": 0.0,
"release_speed": 90.85773330934553,
"release_spin_rate": 2625.986737733158,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 76,
"pitch_usage": 0.0,
"release_speed": 90.85773330934553,
"release_spin_rate": 2625.986737733158,
"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.8577,
"release_spin_rate": 2625.9867,
"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.0557,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 0.3976,
"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.5745,
"sample_weight": 0.96,
"run_prevention_factor": 0.9512,
"strikeout_factor": 1.0938,
"walk_factor": 0.9923,
"homer_factor": 0.9923,
"woba_minus_xwoba": -0.015,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "607192",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9532,
"adjusted": 3
},
"predicted_H": {
"original": 4.0,
"factor": 0.9532,
"adjusted": 4
},
"predicted_BB": {
"original": 2.0,
"factor": 0.9926,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9926,
"adjusted": 0
},
"predicted_SO": {
"original": 8.0,
"factor": 1.09,
"adjusted": 9
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.0,
"predicted_H": 5,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 2,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"Pitches": 104,
"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/20260924_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"
}
} |
| 20260924 | 20260924_STL@PIT | away | Kyle Leahy | Kyle Leahy | True | 5.0 | 2.0 | -9 | 2 | 1 | -1 | 2/3 | 4/0 | 6/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.652173913043478,
"WHIP": 1.3405797101449275,
"IP": 138.0,
"games_started": null,
"games_pitched": 29,
"role_avg_IP": 4.759,
"recent_avg_IP": 3.133,
"last_start_IP": 3.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": -0.4005,
"sample_weight": 1.0,
"run_prevention_factor": 1.034,
"strikeout_factor": 0.9846,
"walk_factor": 0.958,
"homer_factor": 1.1187,
"regression_flag": "neutral",
"k_percent": 22.0,
"bb_percent": 7.0,
"woba": 0.327,
"xwoba": 0.337,
"barrel_percent": 9.7,
"hard_hit_percent": 47.0,
"whiff_percent": 22.4
},
"espn_rank": {
"rank": 82,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": {
"applied": true,
"floor_IP": 5.0,
"season_IP": 138.0,
"season_ERA": 3.652,
"season_WHIP": 1.341,
"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": 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": "681517",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 29,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 15.2,
"ER": 12.0,
"R": 13.0,
"H": 19.0,
"BB": 6.0,
"SO": 18.0,
"HR": 3.0,
"BF": 71.0,
"Pitches": 268.0
},
"per_game": {
"IP": 3.0,
"ER": 2.4,
"R": 2.6,
"H": 3.8,
"BB": 1.2,
"SO": 3.6,
"HR": 0.6,
"BF": 14.2,
"Pitches": 53.6
},
"rates": {
"ERA": 6.8936,
"WHIP": 1.5957,
"ER_per_IP": 0.76596,
"H_per_IP": 1.21277,
"BB_per_IP": 0.38298,
"SO_per_IP": 1.14894,
"HR_per_IP": 0.19149
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 42.2,
"ER": 18.0,
"R": 19.0,
"H": 48.0,
"BB": 8.0,
"SO": 50.0,
"HR": 5.0,
"BF": 179.0,
"Pitches": 721.0
},
"per_game": {
"IP": 4.1,
"ER": 1.8,
"R": 1.9,
"H": 4.8,
"BB": 0.8,
"SO": 5.0,
"HR": 0.5,
"BF": 17.9,
"Pitches": 72.1
},
"rates": {
"ERA": 3.7969,
"WHIP": 1.3125,
"ER_per_IP": 0.42188,
"H_per_IP": 1.125,
"BB_per_IP": 0.1875,
"SO_per_IP": 1.17188,
"HR_per_IP": 0.11719
}
},
"season": {
"games": 29,
"totals": {
"IP": 138.0,
"ER": 56.0,
"R": 57.0,
"H": 144.0,
"BB": 41.0,
"SO": 129.0,
"HR": 15.0,
"BF": 587.0,
"Pitches": 2291.0
},
"per_game": {
"IP": 4.2,
"ER": 1.931,
"R": 1.9655,
"H": 4.9655,
"BB": 1.4138,
"SO": 4.4483,
"HR": 0.5172,
"BF": 20.2414,
"Pitches": 79.0
},
"rates": {
"ERA": 3.6522,
"WHIP": 1.3406,
"ER_per_IP": 0.4058,
"H_per_IP": 1.04348,
"BB_per_IP": 0.2971,
"SO_per_IP": 0.93478,
"HR_per_IP": 0.1087
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 4.0,
"predicted_ER": 2.244,
"predicted_H": 4.469,
"predicted_BB": 1.228,
"predicted_SO": 4.327,
"predicted_HR": 0.592,
"predicted_ERA": 5.0782,
"predicted_WHIP": 1.4327
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4121,
"form_weight": 0.5879,
"form_reliability": 0.8529,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 29.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8529,
"prior_weight": 0.1471
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 4.0,
"final": 4.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 2.244,
"final": 2.1434,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.469,
"final": 3.4514,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 4.0,
"form": 1.228,
"final": 2.3705,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 4.327,
"final": 4.6044,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.592,
"final": 0.348,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 5.0782,
"final": 5.0782,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.4327,
"final": 1.4327,
"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": 18,
"H": 48,
"BB": 8,
"SO": 50,
"HR": 5,
"ERA": 3.796875,
"WHIP": 1.3125,
"K9": 10.546875,
"HR9": 1.0546875,
"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-18T00:00:00"
},
"recent_form_boost": 0.922838606741254,
"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": 4.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
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "681517",
"player_name": "Kyle Leahy",
"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": 4.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 4.0,
"predicted_ER": 2.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 2.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": 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": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
}
],
"summary": {
"changed_metrics": 1,
"boosted_metrics": 1,
"deboosted_metrics": 0,
"better_metrics": 1,
"worse_metrics": 0,
"biggest_boost": {
"metric": "predicted_SO",
"before": 5.0,
"after": 6.0,
"delta": 1.0,
"percent_delta": 0.2,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": null,
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "STL",
"games": 158,
"wins": 77,
"losses": 81,
"win_pct": 0.4873,
"runs_scored": 709.0,
"runs_allowed": 730.0,
"run_differential": -21.0,
"run_differential_per_game": -0.1329,
"avg_runs_scored": 4.4873,
"avg_runs_allowed": 4.6203,
"offense_index": 0.9991,
"defense_index": 0.9721,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 4.7,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.0621
},
"opponent": {
"team": "PIT",
"games": 158,
"wins": 80,
"losses": 78,
"win_pct": 0.5063,
"runs_scored": 751.0,
"runs_allowed": 724.0,
"run_differential": 27.0,
"run_differential_per_game": 0.1709,
"avg_runs_scored": 4.7532,
"avg_runs_allowed": 4.5823,
"offense_index": 1.0583,
"defense_index": 0.9802,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 3.9,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0613
},
"edges": {
"quality_edge": -0.1234,
"offense_edge": -0.0009,
"opponent_offense_edge": 0.0583,
"defense_strength": -0.0279,
"opponent_defense_weakness": 0.0198,
"recent_win_pct_edge": -0.2
},
"player_factors": {
"ip": 0.9919,
"run_prevention": 1.0183,
"strikeout": 0.9916
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "681517",
"profile": {
"available": true,
"pitcher_id": "681517",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 568.0,
"k_percent": 22.0,
"bb_percent": 7.0,
"woba": 0.327,
"xwoba": 0.337,
"sweet_spot_percent": 36.3,
"barrel_batted_rate": 9.7,
"hard_hit_percent": 47.0,
"avg_best_speed": 80.6216,
"avg_hyper_speed": 95.3099,
"whiff_percent": 22.4,
"swing_percent": 46.3
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": -0.6478,
"command_and_miss": -0.03,
"regression_edge": -0.2857,
"xwoba_edge": -0.7429,
"barrel_edge": -0.5556,
"hard_hit_edge": -1.3,
"whiff_edge": -0.3857,
"bb_edge": 0.525,
"pitch_design_score": -0.0172
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "681517",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 59,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 59,
"pitch_usage": 0.0,
"release_speed": 89.55713480456048,
"release_spin_rate": 2180.111420248253,
"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": 59,
"pitch_usage": 0.0,
"release_speed": 89.55713480456048,
"release_spin_rate": 2180.111420248253,
"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.5571,
"release_spin_rate": 2180.1114,
"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.0172,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -0.1226,
"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.4005,
"sample_weight": 1.0,
"run_prevention_factor": 1.034,
"strikeout_factor": 0.9846,
"walk_factor": 0.958,
"homer_factor": 1.1187,
"woba_minus_xwoba": -0.01,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "681517",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 1.034,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 1.034,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.958,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 1.1187,
"adjusted": 1
},
"predicted_SO": {
"original": 4.0,
"factor": 0.9846,
"adjusted": 4
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 2,
"predicted_R": 2,
"predicted_ER": 2,
"predicted_BB": 4,
"predicted_SO": 6,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 97,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "ER_WITHIN_ONE",
"severity": "good",
"title": "Earned runs within one",
"detail": "Actual minus predicted earned runs was -1."
},
{
"code": "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": "WALK_COMPONENT_MISS",
"severity": "warning",
"title": "Walk component missed",
"detail": "Actual minus predicted walks was -4."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_STL@PIT | home | Paul Skenes | Paul Skenes | True | 5.2 | 6.1 | 2 | 4 | 1 | -3 | 7/3 | 1/2 | 7/8 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 3.9107142857142856,
"WHIP": 1.130952380952381,
"IP": 168.0,
"games_started": null,
"games_pitched": 31,
"role_avg_IP": 5.419,
"recent_avg_IP": 5.8,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.4767,
"sample_weight": 1.0,
"run_prevention_factor": 0.9595,
"strikeout_factor": 1.0509,
"walk_factor": 0.954,
"homer_factor": 0.9717,
"regression_flag": "neutral",
"k_percent": 27.9,
"bb_percent": 6.8,
"woba": 0.298,
"xwoba": 0.28,
"barrel_percent": 7.1,
"hard_hit_percent": 37.9,
"whiff_percent": 28.1
},
"espn_rank": {
"rank": 42,
"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": "694973",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 31,
"reference_playing_time": 5.667,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 29.0,
"ER": 12.0,
"R": 12.0,
"H": 25.0,
"BB": 6.0,
"SO": 21.0,
"HR": 5.0,
"BF": 116.0,
"Pitches": 440.0
},
"per_game": {
"IP": 5.2,
"ER": 2.4,
"R": 2.4,
"H": 5.0,
"BB": 1.2,
"SO": 4.2,
"HR": 1.0,
"BF": 23.2,
"Pitches": 88.0
},
"rates": {
"ERA": 3.7241,
"WHIP": 1.069,
"ER_per_IP": 0.41379,
"H_per_IP": 0.86207,
"BB_per_IP": 0.2069,
"SO_per_IP": 0.72414,
"HR_per_IP": 0.17241
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 52.2,
"ER": 29.0,
"R": 30.0,
"H": 49.0,
"BB": 21.0,
"SO": 54.0,
"HR": 8.0,
"BF": 224.0,
"Pitches": 884.0
},
"per_game": {
"IP": 5.1,
"ER": 2.9,
"R": 3.0,
"H": 4.9,
"BB": 2.1,
"SO": 5.4,
"HR": 0.8,
"BF": 22.4,
"Pitches": 88.4
},
"rates": {
"ERA": 4.9557,
"WHIP": 1.3291,
"ER_per_IP": 0.55063,
"H_per_IP": 0.93038,
"BB_per_IP": 0.39873,
"SO_per_IP": 1.02532,
"HR_per_IP": 0.1519
}
},
"season": {
"games": 31,
"totals": {
"IP": 168.0,
"ER": 73.0,
"R": 81.0,
"H": 143.0,
"BB": 47.0,
"SO": 192.0,
"HR": 19.0,
"BF": 689.0,
"Pitches": 2794.0
},
"per_game": {
"IP": 5.1,
"ER": 2.3548,
"R": 2.6129,
"H": 4.6129,
"BB": 1.5161,
"SO": 6.1935,
"HR": 0.6129,
"BF": 22.2258,
"Pitches": 90.129
},
"rates": {
"ERA": 3.9107,
"WHIP": 1.131,
"ER_per_IP": 0.43452,
"H_per_IP": 0.85119,
"BB_per_IP": 0.27976,
"SO_per_IP": 1.14286,
"HR_per_IP": 0.1131
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.2,
"predicted_ER": 2.6,
"predicted_H": 4.944,
"predicted_BB": 1.657,
"predicted_SO": 5.049,
"predicted_HR": 0.841,
"predicted_ERA": 4.2485,
"predicted_WHIP": 1.1983
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4087,
"form_weight": 0.5913,
"form_reliability": 0.8611,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 31.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8611,
"prior_weight": 0.1389
},
"applied_metrics": {
"predicted_IP": {
"model": 5.2,
"form": 5.2,
"final": 5.2,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 4.0,
"form": 2.6,
"final": 3.1722,
"source": "model_form_blend"
},
"predicted_H": {
"model": 7.0,
"form": 4.944,
"final": 5.7843,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 1.0,
"form": 1.657,
"final": 1.3885,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 7.0,
"form": 5.049,
"final": 5.8463,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.841,
"final": 0.4973,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.2485,
"final": 4.2485,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.1983,
"final": 1.1983,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 52.2,
"ER": 29,
"H": 49,
"BB": 21,
"SO": 54,
"HR": 8,
"ERA": 4.955696202531646,
"WHIP": 1.3291139240506329,
"K9": 9.227848101265824,
"HR9": 1.3670886075949367,
"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-18T00:00:00"
},
"recent_form_boost": 1.05362134012733,
"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": 1.0,
"predicted_SO": 7.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": "694973",
"player_name": "Paul Skenes",
"position": "Starter",
"team": "PIT",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 1.0,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.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": 1.0,
"predicted_ER": 4.0,
"predicted_H": 7.0,
"predicted_HR": 0.0,
"predicted_IP": 5.2,
"predicted_R": 4.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": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": 1.0,
"after": 1.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 4.0,
"after": 4.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_H",
"before": 7.0,
"after": 7.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 5.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": "PIT",
"games": 158,
"wins": 80,
"losses": 78,
"win_pct": 0.5063,
"runs_scored": 751.0,
"runs_allowed": 724.0,
"run_differential": 27.0,
"run_differential_per_game": 0.1709,
"avg_runs_scored": 4.7532,
"avg_runs_allowed": 4.5823,
"offense_index": 1.0583,
"defense_index": 0.9802,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 4.0,
"avg_runs_allowed": 3.9,
"run_differential": 1.0
},
"available": true,
"quality_score": 0.0613
},
"opponent": {
"team": "STL",
"games": 158,
"wins": 77,
"losses": 81,
"win_pct": 0.4873,
"runs_scored": 709.0,
"runs_allowed": 730.0,
"run_differential": -21.0,
"run_differential_per_game": -0.1329,
"avg_runs_scored": 4.4873,
"avg_runs_allowed": 4.6203,
"offense_index": 0.9991,
"defense_index": 0.9721,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 4,
"losses": 6,
"win_pct": 0.4,
"avg_runs_scored": 3.4,
"avg_runs_allowed": 4.7,
"run_differential": -13.0
},
"available": true,
"quality_score": -0.0621
},
"edges": {
"quality_edge": 0.1234,
"offense_edge": 0.0583,
"opponent_offense_edge": -0.0009,
"defense_strength": -0.0198,
"opponent_defense_weakness": 0.0279,
"recent_win_pct_edge": 0.2
},
"player_factors": {
"ip": 1.0044,
"run_prevention": 0.9957,
"strikeout": 1.0038
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "694973",
"profile": {
"available": true,
"pitcher_id": "694973",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 662.0,
"k_percent": 27.9,
"bb_percent": 6.8,
"woba": 0.298,
"xwoba": 0.28,
"sweet_spot_percent": 35.6,
"barrel_batted_rate": 7.1,
"hard_hit_percent": 37.9,
"avg_best_speed": 76.4405,
"avg_hyper_speed": 93.7538,
"whiff_percent": 28.1,
"swing_percent": 51.1
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.4382,
"command_and_miss": 0.6443,
"regression_edge": 0.5143,
"xwoba_edge": 0.8857,
"barrel_edge": 0.0222,
"hard_hit_edge": 0.0,
"whiff_edge": 0.4286,
"bb_edge": 0.575,
"pitch_design_score": 0.1548
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "694973",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 86,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 92.62832752735103,
"release_spin_rate": 2107.08006848347,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 86,
"pitch_usage": 0.0,
"release_speed": 92.62832752735103,
"release_spin_rate": 2107.08006848347,
"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.6283,
"release_spin_rate": 2107.0801,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.1548,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 1.1059,
"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.4767,
"sample_weight": 1.0,
"run_prevention_factor": 0.9595,
"strikeout_factor": 1.0509,
"walk_factor": 0.954,
"homer_factor": 0.9717,
"woba_minus_xwoba": 0.018,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "694973",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 2.0,
"factor": 0.9595,
"adjusted": 2
},
"predicted_H": {
"original": 5.0,
"factor": 0.9595,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.954,
"adjusted": 1
},
"predicted_HR": {
"original": 1.0,
"factor": 0.9717,
"adjusted": 1
},
"predicted_SO": {
"original": 5.0,
"factor": 1.0509,
"adjusted": 5
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.2,
"predicted_H": 7,
"predicted_R": 4,
"predicted_ER": 4,
"predicted_BB": 1,
"predicted_SO": 7,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 25,
"Pitches": 96,
"published_line_source": "scoring_simulation.box_score"
}
},
"findings": [
{
"code": "DIRECT_ER_MISS",
"severity": "error",
"title": "Earned-run miss of 3",
"detail": "Actual minus predicted earned runs was -3."
},
{
"code": "HIT_COMPONENT_MISS",
"severity": "warning",
"title": "Hits missed by 4",
"detail": "Actual minus predicted hits was -4."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: False; actual quality start: True."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_TB@NYY | away | Ian Seymour | Ian Seymour | True | 5.0 | 5.0 | 0 | 0 | 0 | 0 | 2/1 | 2/0 | 5/3 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 4.028795811518325,
"WHIP": 1.130890052356021,
"IP": 127.1,
"games_started": null,
"games_pitched": 44,
"role_avg_IP": 4.8,
"recent_avg_IP": 5.067,
"last_start_IP": 5.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.2879,
"sample_weight": 1.0,
"run_prevention_factor": 0.9755,
"strikeout_factor": 1.0646,
"walk_factor": 0.952,
"homer_factor": 1.0397,
"regression_flag": "neutral",
"k_percent": 29.0,
"bb_percent": 6.7,
"woba": 0.317,
"xwoba": 0.295,
"barrel_percent": 10.4,
"hard_hit_percent": 37.3,
"whiff_percent": 29.4
},
"espn_rank": {
"rank": 302,
"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.979,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8386,
"prior_weight": 0.1614
},
"role": "pitcher",
"pitcher_usage_role": "starter",
"player_id": "693855",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 44,
"reference_playing_time": 5.0,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 26.0,
"ER": 15.0,
"R": 17.0,
"H": 29.0,
"BB": 4.0,
"SO": 32.0,
"HR": 7.0,
"BF": 113.0,
"Pitches": 417.0
},
"per_game": {
"IP": 5.1,
"ER": 3.0,
"R": 3.4,
"H": 5.8,
"BB": 0.8,
"SO": 6.4,
"HR": 1.4,
"BF": 22.6,
"Pitches": 83.4
},
"rates": {
"ERA": 5.1923,
"WHIP": 1.2692,
"ER_per_IP": 0.57692,
"H_per_IP": 1.11538,
"BB_per_IP": 0.15385,
"SO_per_IP": 1.23077,
"HR_per_IP": 0.26923
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 53.2,
"ER": 24.0,
"R": 26.0,
"H": 55.0,
"BB": 9.0,
"SO": 69.0,
"HR": 13.0,
"BF": 228.0,
"Pitches": 859.0
},
"per_game": {
"IP": 5.1,
"ER": 2.4,
"R": 2.6,
"H": 5.5,
"BB": 0.9,
"SO": 6.9,
"HR": 1.3,
"BF": 22.8,
"Pitches": 85.9
},
"rates": {
"ERA": 4.0248,
"WHIP": 1.1925,
"ER_per_IP": 0.4472,
"H_per_IP": 1.02484,
"BB_per_IP": 0.1677,
"SO_per_IP": 1.28571,
"HR_per_IP": 0.24224
}
},
"season": {
"games": 44,
"totals": {
"IP": 127.1,
"ER": 57.0,
"R": 62.0,
"H": 108.0,
"BB": 36.0,
"SO": 155.0,
"HR": 25.0,
"BF": 529.0,
"Pitches": 2042.0
},
"per_game": {
"IP": 3.0,
"ER": 1.2955,
"R": 1.4091,
"H": 2.4545,
"BB": 0.8182,
"SO": 3.5227,
"HR": 0.5682,
"BF": 12.0227,
"Pitches": 46.4091
},
"rates": {
"ERA": 4.0288,
"WHIP": 1.1309,
"ER_per_IP": 0.44764,
"H_per_IP": 0.84817,
"BB_per_IP": 0.28272,
"SO_per_IP": 1.21728,
"HR_per_IP": 0.19634
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 5.0,
"predicted_ER": 2.476,
"predicted_H": 4.998,
"predicted_BB": 1.053,
"predicted_SO": 5.852,
"predicted_HR": 1.122,
"predicted_ERA": 4.5582,
"predicted_WHIP": 1.2379
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4182,
"form_weight": 0.5818,
"form_reliability": 0.8386,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.979,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8386,
"prior_weight": 0.1614
},
"applied_metrics": {
"predicted_IP": {
"model": 5.0,
"form": 5.0,
"final": 5.0,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 0.0,
"form": 2.476,
"final": 1.4406,
"source": "model_form_blend"
},
"predicted_H": {
"model": 2.0,
"form": 4.998,
"final": 3.7443,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 1.053,
"final": 1.449,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 5.0,
"form": 5.852,
"final": 5.4957,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 1.122,
"final": 0.6528,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 4.5582,
"final": 4.5582,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 1.2379,
"final": 1.2379,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 53.2,
"ER": 24,
"H": 55,
"BB": 9,
"SO": 69,
"HR": 13,
"ERA": 4.024844720496895,
"WHIP": 1.1925465838509317,
"K9": 11.571428571428571,
"HR9": 2.1801242236024847,
"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-09-18T00:00:00"
},
"recent_form_boost": 0.945486364893428,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 5.0,
"predicted_ER": 0.0,
"predicted_H": 2.0,
"predicted_BB": 2.0,
"predicted_SO": 5.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 25.979,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8386,
"prior_weight": 0.1614
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "693855",
"player_name": "Ian Seymour",
"position": "Starter",
"team": "TB",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 0.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_SO": 5.0
},
"changed_metrics": [],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
},
{
"index": 2,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 0.0,
"predicted_H": 2.0,
"predicted_HR": 0.0,
"predicted_IP": 5.0,
"predicted_R": 0.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": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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": 5.0,
"after": 5.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 2.0,
"after": 2.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_ER",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"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": 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": 158,
"wins": 96,
"losses": 62,
"win_pct": 0.6076,
"runs_scored": 715.0,
"runs_allowed": 636.0,
"run_differential": 79.0,
"run_differential_per_game": 0.5,
"avg_runs_scored": 4.5253,
"avg_runs_allowed": 4.0253,
"offense_index": 1.0086,
"defense_index": 1.1146,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 2.7,
"run_differential": 20.0
},
"available": true,
"quality_score": 0.2228
},
"opponent": {
"team": "NYY",
"games": 158,
"wins": 91,
"losses": 67,
"win_pct": 0.5759,
"runs_scored": 725.0,
"runs_allowed": 584.0,
"run_differential": 141.0,
"run_differential_per_game": 0.8924,
"avg_runs_scored": 4.5886,
"avg_runs_allowed": 3.6962,
"offense_index": 1.0227,
"defense_index": 1.2139,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 3.2,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.2089
},
"edges": {
"quality_edge": 0.0139,
"offense_edge": 0.0086,
"opponent_offense_edge": 0.0227,
"defense_strength": 0.1146,
"opponent_defense_weakness": -0.2139,
"recent_win_pct_edge": 0.1
},
"player_factors": {
"ip": 1.0031,
"run_prevention": 0.9915,
"strikeout": 0.9986
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "693855",
"profile": {
"available": true,
"pitcher_id": "693855",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 500.0,
"k_percent": 29.0,
"bb_percent": 6.7,
"woba": 0.317,
"xwoba": 0.295,
"sweet_spot_percent": 34.6,
"barrel_batted_rate": 10.4,
"hard_hit_percent": 37.3,
"avg_best_speed": 77.1995,
"avg_hyper_speed": 93.8607,
"whiff_percent": 29.4,
"swing_percent": 51.5
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.0673,
"command_and_miss": 0.785,
"regression_edge": 0.6286,
"xwoba_edge": 0.4571,
"barrel_edge": -0.7111,
"hard_hit_edge": 0.0857,
"whiff_edge": 0.6143,
"bb_edge": 0.6,
"pitch_design_score": -0.2091
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "693855",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 84,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 84,
"pitch_usage": 0.0,
"release_speed": 86.1295711647252,
"release_spin_rate": 1962.9440503947853,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"pitch_mix": [
{
"pitch_type": null,
"pitch_name": null,
"pitches": 84,
"pitch_usage": 0.0,
"release_speed": 86.1295711647252,
"release_spin_rate": 1962.9440503947853,
"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.1296,
"release_spin_rate": 1962.9441,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": -0.2091,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": -1.4936,
"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.2879,
"sample_weight": 1.0,
"run_prevention_factor": 0.9755,
"strikeout_factor": 1.0646,
"walk_factor": 0.952,
"homer_factor": 1.0397,
"woba_minus_xwoba": 0.022,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "693855",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 3.0,
"factor": 0.9755,
"adjusted": 3
},
"predicted_H": {
"original": 5.0,
"factor": 0.9755,
"adjusted": 5
},
"predicted_BB": {
"original": 1.0,
"factor": 0.952,
"adjusted": 1
},
"predicted_HR": {
"original": 2.0,
"factor": 1.0397,
"adjusted": 2
},
"predicted_SO": {
"original": 7.0,
"factor": 1.0646,
"adjusted": 7
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 5.0,
"predicted_H": 2,
"predicted_R": 0,
"predicted_ER": 0,
"predicted_BB": 2,
"predicted_SO": 5,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 19,
"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 +0."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |
| 20260924 | 20260924_TB@NYY | home | Cam Schlittler | Cam Schlittler | True | 6.1 | 3.0 | -10 | 1 | 1 | 0 | 3/3 | 2/2 | 8/5 | Last 10 before this game (10 available){
"model_context": {
"embedded_season": {
"ERA": 1.9353146853146854,
"WHIP": 0.9073426573426574,
"IP": 190.2,
"games_started": null,
"games_pitched": 32,
"role_avg_IP": 5.958,
"recent_avg_IP": 6.533,
"last_start_IP": 6.0,
"projection_source": "all_players_stats_recent_season_blend"
},
"savant": {
"quality_score": 0.7044,
"sample_weight": 1.0,
"run_prevention_factor": 0.9401,
"strikeout_factor": 1.076,
"walk_factor": 0.944,
"homer_factor": 0.9644,
"regression_flag": "neutral",
"k_percent": 31.3,
"bb_percent": 6.3,
"woba": 0.243,
"xwoba": 0.262,
"barrel_percent": 7.4,
"hard_hit_percent": 38.4,
"whiff_percent": 29.1
},
"espn_rank": {
"rank": 2,
"total_ranked": null,
"metrics": null
},
"starter_workload_floor": null,
"player_form_blend": {
"form_version": "player_form_v3_5_10_season",
"method": "weighted_recent_form",
"description": "Legacy 5/10/season recent form with Bayesian league-prior shrinkage",
"weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"effective_weights": {
"last_5": 0.45,
"last_10": 0.35,
"season": 0.2
},
"shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 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": "693645",
"report_date": "20260924",
"season_year": 2026,
"rows_used": 32,
"reference_playing_time": 6.333,
"windows": {
"last_5": {
"games": 5,
"totals": {
"IP": 32.2,
"ER": 3.0,
"R": 5.0,
"H": 11.0,
"BB": 10.0,
"SO": 41.0,
"HR": 2.0,
"BF": 120.0,
"Pitches": 489.0
},
"per_game": {
"IP": 6.2,
"ER": 0.6,
"R": 1.0,
"H": 2.2,
"BB": 2.0,
"SO": 8.2,
"HR": 0.4,
"BF": 24.0,
"Pitches": 97.8
},
"rates": {
"ERA": 0.8265,
"WHIP": 0.6429,
"ER_per_IP": 0.09184,
"H_per_IP": 0.33673,
"BB_per_IP": 0.30612,
"SO_per_IP": 1.2551,
"HR_per_IP": 0.06122
}
},
"last_10": {
"games": 10,
"totals": {
"IP": 60.1,
"ER": 11.0,
"R": 13.0,
"H": 30.0,
"BB": 22.0,
"SO": 77.0,
"HR": 4.0,
"BF": 232.0,
"Pitches": 954.0
},
"per_game": {
"IP": 6.0,
"ER": 1.1,
"R": 1.3,
"H": 3.0,
"BB": 2.2,
"SO": 7.7,
"HR": 0.4,
"BF": 23.2,
"Pitches": 95.4
},
"rates": {
"ERA": 1.6409,
"WHIP": 0.8619,
"ER_per_IP": 0.18232,
"H_per_IP": 0.49724,
"BB_per_IP": 0.36464,
"SO_per_IP": 1.27624,
"HR_per_IP": 0.0663
}
},
"season": {
"games": 32,
"totals": {
"IP": 190.2,
"ER": 41.0,
"R": 50.0,
"H": 126.0,
"BB": 47.0,
"SO": 234.0,
"HR": 16.0,
"BF": 747.0,
"Pitches": 2971.0
},
"per_game": {
"IP": 6.0,
"ER": 1.2812,
"R": 1.5625,
"H": 3.9375,
"BB": 1.4688,
"SO": 7.3125,
"HR": 0.5,
"BF": 23.3438,
"Pitches": 92.8438
},
"rates": {
"ERA": 1.9353,
"WHIP": 0.9073,
"ER_per_IP": 0.21503,
"H_per_IP": 0.66084,
"BB_per_IP": 0.2465,
"SO_per_IP": 1.22727,
"HR_per_IP": 0.08392
}
}
},
"blend_segments": {},
"weighted_prediction": {
"predicted_IP": 6.1,
"predicted_ER": 1.243,
"predicted_H": 3.333,
"predicted_BB": 2.036,
"predicted_SO": 7.652,
"predicted_HR": 0.494,
"predicted_ERA": 1.774,
"predicted_WHIP": 0.8516
}
},
"model_form_blend_trace": {
"requested_model_weight": 0.35,
"requested_form_weight": 0.65,
"model_weight": 0.4071,
"form_weight": 0.5929,
"form_reliability": 0.8649,
"adaptive_parameters": {
"player.model_weight": 0.5,
"player.form_reliability_floor": 0.35
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 32.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8649,
"prior_weight": 0.1351
},
"applied_metrics": {
"predicted_IP": {
"model": 6.1,
"form": 6.1,
"final": 6.1,
"source": "model_form_blend"
},
"predicted_ER": {
"model": 2.0,
"form": 1.243,
"final": 1.5512,
"source": "model_form_blend"
},
"predicted_H": {
"model": 3.0,
"form": 3.333,
"final": 3.1974,
"source": "model_form_blend"
},
"predicted_BB": {
"model": 2.0,
"form": 2.036,
"final": 2.0213,
"source": "model_form_blend"
},
"predicted_SO": {
"model": 4.0,
"form": 7.652,
"final": 6.1653,
"source": "model_form_blend"
},
"predicted_HR": {
"model": 0.0,
"form": 0.494,
"final": 0.2929,
"source": "model_form_blend"
},
"predicted_ERA": {
"model": null,
"form": 1.774,
"final": 1.774,
"source": "form_only"
},
"predicted_WHIP": {
"model": null,
"form": 0.8516,
"final": 0.8516,
"source": "form_only"
}
}
},
"recent_form_analysis": {
"hitting": {
"AB": 0,
"H": 0,
"HR": 0,
"RBI": 0,
"R": 0,
"BB": 0,
"SO": 0,
"2B": 0,
"3B": 0,
"AVG": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"games_played": 0,
"hot_streak": false,
"cold_streak": true,
"trend": "stable"
},
"pitching": {
"IP": 60.1,
"ER": 11,
"H": 30,
"BB": 22,
"SO": 77,
"HR": 4,
"ERA": 1.6408839779005524,
"WHIP": 0.861878453038674,
"K9": 11.486187845303867,
"HR9": 0.5966850828729282,
"games_pitched": 10,
"quality_starts": 7,
"dominant_form": true,
"struggling_form": false
},
"fielding": {
"errors": 1,
"assists": 0,
"games_fielded": 10,
"error_prone": false
},
"games_count": 10,
"latest_game_date": "2026-09-19T00:00:00"
},
"recent_form_boost": 0.6884402565813702,
"stat_evolution": [
{
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_IP": 6.333333333333333,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_BB": 2.0,
"predicted_SO": 4.0,
"predicted_HR": 0.0
},
"form_shrinkage": {
"method": "bayesian_league_prior",
"sample_size": 32.0,
"sample_unit": "starter_equivalent_games",
"prior_size": 5.0,
"data_weight": 0.8649,
"prior_weight": 0.1351
}
},
{
"step": "pitcher_quality_guardrail",
"description": "Elite/strong starter guardrail capped a noisy simulation draw using season workload, ERA/WHIP, and weighted recent form.",
"stats": {
"predicted_IP": 6.1,
"predicted_ER": 1,
"predicted_H": 3,
"predicted_BB": 2,
"predicted_SO": 8,
"predicted_HR": 0
}
}
],
"prediction_impact_trace": {
"trace_version": "1.0",
"role": "pitcher",
"player_id": "693645",
"player_name": "Cam Schlittler",
"position": "Starter",
"team": "NYY",
"interpretation": "Boost/deboost is numeric movement vs the previous step. Better/worse is role-aware: hitter offense up is better; pitcher run prevention down is better.",
"steps": [
{
"index": 1,
"step": "pitcher_form_blend",
"description": "Pitcher model/profile expectation with Bayesian recent-form shrinkage",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 2.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.3333,
"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": 2.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"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": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 8.0,
"delta": 4.0,
"percent_delta": 1.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": 4.0,
"after": 8.0,
"delta": 4.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
}
},
"weights": {},
"window_games": {}
},
{
"index": 3,
"step": "current_json_final",
"description": "Final player values currently stored in the game JSON",
"stats": {
"predicted_BB": 2.0,
"predicted_ER": 1.0,
"predicted_H": 3.0,
"predicted_HR": 0.0,
"predicted_IP": 6.1,
"predicted_R": 1.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": 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": 6.1,
"after": 6.1,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_SO",
"before": 8.0,
"after": 8.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
}
],
"summary": {
"changed_metrics": 0,
"boosted_metrics": 0,
"deboosted_metrics": 0,
"better_metrics": 0,
"worse_metrics": 0,
"biggest_boost": null,
"biggest_deboost": null
},
"weights": {},
"window_games": {}
}
],
"total_change": {
"from_step": "pitcher_form_blend",
"to_step": "current_json_final",
"changed_metrics": [
{
"metric": "predicted_BB",
"before": 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": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
{
"metric": "predicted_H",
"before": 3.0,
"after": 3.0,
"delta": 0.0,
"percent_delta": 0.0,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_HR",
"before": 0.0,
"after": 0.0,
"delta": 0.0,
"percent_delta": null,
"direction": "no_change",
"projection_effect": "neutral",
"material": false
},
{
"metric": "predicted_IP",
"before": 6.3333,
"after": 6.1,
"delta": -0.2333,
"percent_delta": -0.0368,
"direction": "deboost",
"projection_effect": "worse",
"material": true
},
{
"metric": "predicted_SO",
"before": 4.0,
"after": 8.0,
"delta": 4.0,
"percent_delta": 1.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": 4.0,
"after": 8.0,
"delta": 4.0,
"percent_delta": 1.0,
"direction": "boost",
"projection_effect": "better",
"material": true
},
"biggest_deboost": {
"metric": "predicted_ER",
"before": 2.0,
"after": 1.0,
"delta": -1.0,
"percent_delta": -0.5,
"direction": "deboost",
"projection_effect": "better",
"material": true
},
"has_material_change": true,
"dominant_effect": "better"
}
}
},
"team_form_snapshot": {
"method": "team_form_snapshot",
"role": "pitcher",
"team": {
"team": "NYY",
"games": 158,
"wins": 91,
"losses": 67,
"win_pct": 0.5759,
"runs_scored": 725.0,
"runs_allowed": 584.0,
"run_differential": 141.0,
"run_differential_per_game": 0.8924,
"avg_runs_scored": 4.5886,
"avg_runs_allowed": 3.6962,
"offense_index": 1.0227,
"defense_index": 1.2139,
"current_streak": "W1",
"recent": {
"games": 10,
"wins": 6,
"losses": 4,
"win_pct": 0.6,
"avg_runs_scored": 5.0,
"avg_runs_allowed": 3.2,
"run_differential": 18.0
},
"available": true,
"quality_score": 0.2089
},
"opponent": {
"team": "TB",
"games": 158,
"wins": 96,
"losses": 62,
"win_pct": 0.6076,
"runs_scored": 715.0,
"runs_allowed": 636.0,
"run_differential": 79.0,
"run_differential_per_game": 0.5,
"avg_runs_scored": 4.5253,
"avg_runs_allowed": 4.0253,
"offense_index": 1.0086,
"defense_index": 1.1146,
"current_streak": "L1",
"recent": {
"games": 10,
"wins": 7,
"losses": 3,
"win_pct": 0.7,
"avg_runs_scored": 4.7,
"avg_runs_allowed": 2.7,
"run_differential": 20.0
},
"available": true,
"quality_score": 0.2228
},
"edges": {
"quality_edge": -0.0139,
"offense_edge": 0.0227,
"opponent_offense_edge": 0.0086,
"defense_strength": 0.2139,
"opponent_defense_weakness": -0.1146,
"recent_win_pct_edge": -0.1
},
"player_factors": {
"ip": 1.0055,
"run_prevention": 0.9807,
"strikeout": 0.9989
},
"savant_pitcher_quality_adjustment": {
"applied": true,
"pitcher_id": "693645",
"profile": {
"available": true,
"pitcher_id": "693645",
"player_name": "",
"source": "all_players_stats.csv embedded Savant pitcher features",
"source_url": null,
"metrics": {
"pa": 691.0,
"k_percent": 31.3,
"bb_percent": 6.3,
"woba": 0.243,
"xwoba": 0.262,
"sweet_spot_percent": 32.5,
"barrel_batted_rate": 7.4,
"hard_hit_percent": 38.4,
"avg_best_speed": 77.6822,
"avg_hyper_speed": 93.7825,
"whiff_percent": 29.1,
"swing_percent": 52.0
},
"league_medians": {
"pa": 135.0,
"k_percent": 22.0,
"bb_percent": 9.1,
"woba": 0.316,
"xwoba": 0.311,
"sweet_spot_percent": 33.3,
"barrel_batted_rate": 7.2,
"hard_hit_percent": 37.9,
"avg_best_speed": 77.6151,
"avg_hyper_speed": 93.913,
"whiff_percent": 25.1,
"swing_percent": 47.4
},
"components": {
"contact_quality": 0.8793,
"command_and_miss": 0.9379,
"regression_edge": -0.5429,
"xwoba_edge": 1.4,
"barrel_edge": -0.0444,
"hard_hit_edge": -0.0714,
"whiff_edge": 0.5714,
"bb_edge": 0.7,
"pitch_design_score": 0.28
},
"pitch_movement_profile": {
"available": true,
"pitcher_id": "693645",
"player_name": null,
"source": "all_players_stats.csv embedded Savant pitcher movement features",
"total_pitches": 97,
"primary_pitch": {
"pitch_type": null,
"pitch_name": null,
"pitches": 97,
"pitch_usage": 0.0,
"release_speed": 95.84565678559713,
"release_spin_rate": 2515.855995429108,
"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": 95.84565678559713,
"release_spin_rate": 2515.855995429108,
"spin_axis": null,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": null,
"release_pos_x": null,
"release_pos_z": null,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
}
],
"summary": {
"release_speed": 95.8457,
"release_spin_rate": 2515.856,
"spin_axis": 0.0,
"horizontal_break_inches": 0.0,
"induced_vertical_break_inches": 0.0,
"vertical_break_with_gravity_inches": 0.0,
"release_pos_x": 0.0,
"release_pos_z": 0.0,
"release_extension": 0.0,
"arm_angle": 0.0,
"whiff_percent": 0.0,
"xwoba": 0.0,
"hard_hit_percent": 0.0
},
"components": {
"movement_score": 0.28,
"horizontal_break_edge": 0.0,
"induced_vertical_break_edge": 0.0,
"extension_edge": 0.0,
"velocity_edge": 2.0,
"whiff_edge": 0.0,
"xwoba_edge": -0.0,
"hard_hit_edge": -0.0
},
"spin_efficiency_note": "Savant statcast CSV provides spin rate and spin axis here; true spin efficiency is not exposed in this feed."
},
"quality_score": 0.7044,
"sample_weight": 1.0,
"run_prevention_factor": 0.9401,
"strikeout_factor": 1.076,
"walk_factor": 0.944,
"homer_factor": 0.9644,
"woba_minus_xwoba": -0.019,
"regression_flag": "neutral",
"espn_rank": {
"available": false,
"player_id": "693645",
"espn_rank": null
}
},
"adjusted_fields": {
"predicted_ER": {
"original": 1.0,
"factor": 0.9401,
"adjusted": 1
},
"predicted_H": {
"original": 3.0,
"factor": 0.9401,
"adjusted": 3
},
"predicted_BB": {
"original": 2.0,
"factor": 0.944,
"adjusted": 2
},
"predicted_HR": {
"original": 0.0,
"factor": 0.9644,
"adjusted": 0
},
"predicted_SO": {
"original": 8.0,
"factor": 1.076,
"adjusted": 9
}
}
}
},
"simulation_box_score_stats": {
"predicted_IP": 6.1,
"predicted_H": 3,
"predicted_R": 1,
"predicted_ER": 1,
"predicted_BB": 2,
"predicted_SO": 8,
"predicted_HR": 0,
"box_score_synced": true,
"BF": 24,
"Pitches": 100,
"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": "error",
"title": "Workload missed by at least three innings",
"detail": "The actual outing differed by -10 outs from the projected workload."
},
{
"code": "QUALITY_START_CLASSIFICATION_MISS",
"severity": "warning",
"title": "Quality-start classification was wrong",
"detail": "Projected quality start: True; actual quality start: False."
}
],
"provenance": {
"prediction": "output/games/20260924_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"
}
} |