{
  "public_model_id": "fair_xwoba",
  "public_name": "FAIR xwOBA",
  "public_expansion": "Field- and Atmosphere-Informed Realized-contact xwOBA",
  "version": "0.1.0",
  "internal_verified_candidate_id": "defensive_negative_ground_pair_gam_v1",
  "estimand": "realized contact wOBA on matched eligible batted balls",
  "outcome_classes": [0, 0.9, 1.25, 1.6, 2],
  "feature_whitelist": ["launch_speed_mph", "launch_angle_deg", "spray_unit_x", "spray_unit_y", "hang_time_proxy_s", "temperature_delta_f", "tailwind_exposure", "headwind_exposure", "crosswind_exposure", "park_canonical_id", "roof_status", "shift_rule_era", "if_alignment_v1", "of_alignment_v1"],
  "forbidden_prediction_fields": ["sprint_speed", "player_id", "player_name", "age", "height", "weight", "handedness", "position", "team", "fielder_id"],
  "learner": {
    "family": "five_class_xgboost",
    "max_depth": 6,
    "eta": 0.0297,
    "min_child_weight": 25.5706,
    "subsample": 0.7989,
    "colsample_bytree": 0.9369,
    "gamma": 0.4822,
    "lambda": 17.7785,
    "alpha": 1.5377,
    "seed": 20260512
  },
  "probability_calibration": "temperature scaling on disjoint prior-season whole games",
  "scalar_calibration": "prior-OOF isotonic calibration plus a fixed 75 percent early-season PAVA schedule",
  "local_probability_adjustment": {
    "scope": "hang time zero, launch angle [-20, 0), launch speed [55, 100]",
    "target": "conditional out-versus-single probability",
    "method": "prior-OOF additive binomial GAM with four k=4 cubic smooths",
    "inputs": ["launch_angle_deg", "launch_speed_mph", "spray_unit_x", "spray_unit_y"],
    "logit_delta_cap": 0.25,
    "minimum_history_rows": 10000,
    "exact_identity_fallback": true
  },
  "development_seasons": [2019, 2020, 2021, 2022, 2023, 2024],
  "source_seasons": [2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024],
  "year_2025_status": "not_opened_for_this_candidate",
  "year_2026_status": "not_opened",
  "result_status": "exposed_rolling_development_evidence_not_final_validation",
  "player_free_at_score_time": true,
  "alignment_nuance": "Pre-pitch defensive alignment is not a player trait, but can reflect how defenses respond to hitter tendencies."
}
